基于webservice的邮件消息推送服务

 
  
基于webservice的邮件消息推送服务

注意:各大邮箱的smtp 自己查,使用前线在你要作为发送的邮件的邮箱打开三项服务 POP3/SMTP服务 、IMAP/SMTP服务 和Exchange服务 

废话不说了,直接上代码:

1.服务代码:EmailService.asmx


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Web;
using System.Web.Services;


namespace MessageService
{
    ///


    /// EmailService 的摘要说明 
    ///

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class EmailService : System.Web.Services.WebService
    {


        ///
        /// 服务器名称
        ///

        private string SMTP = null;
        ///
        /// 默认端口 25;
        ///

        private int Port = 25;
        ///
        /// 发送方邮件地址
        ///

        private string EmailAddress = null;
        ///
        /// 发送方邮件密码
        ///

        private string Pass = null;
        ///
        /// 昵称
        ///

        private string Nick = null;
        ///
        /// 邮件标题
        ///

        private string Title = null;
        ///
        /// 邮件内容
        ///

        private string Content = null;


        ///
        /// 收件人邮箱地址
        ///

        private string ReceiveEmall = null;
        ///
        /// smtp客户端协议
        ///

        private SmtpClient smtpclient = null;
        //设置收信人地址
        MailAddress AddressTo = null;
        //邮件信息
        MailMessage Message    = new MailMessage();


        [WebMethod]
        //接受客户端发过来的额数据
        public string SendMessage(string smtp, string emailasddress, string pass, string nick, string title, string content, string receive)
        {
            if (string.IsNullOrEmpty(smtp) || string.IsNullOrEmpty(emailasddress) || string.IsNullOrEmpty(pass) || string.IsNullOrEmpty(nick) || string.IsNullOrEmpty(title) || string.IsNullOrEmpty(content) || string.IsNullOrEmpty(receive))
            {
                return "参数错误!请检查";
            }

            SMTP = smtp;
            EmailAddress = emailasddress;
            Pass = pass;
            Nick = nick;
            Title = title;
            Content = content;
            ReceiveEmall = receive;
            //信息的主题
            Message.Subject = Title;
            //实例化发送方
            Message.From = new MailAddress(EmailAddress);
            //主题的编码方式
            Message.SubjectEncoding = System.Text.Encoding.UTF8;


            //邮件正文
            Message.Body = Content;
            //邮件正文的编码
            Message.BodyEncoding = System.Text.Encoding.UTF8;
            //设置可以为html格式
            Message.IsBodyHtml = true;
            
            //清除附件信息
            Message.Attachments.Clear();  
            //优先级
            Message.Priority = MailPriority.Normal;
            //通知传送是否成功
            Message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
            //分割收信人地址
            string[] receiveStr = ReceiveEmall.Split(';');
            for (int i = 0; i < receiveStr.Length; i++)
            {
                //收信人地址
                string displayName = receiveStr[i].Trim().Split('@').FirstOrDefault().ToString();
                AddressTo = new MailAddress(receiveStr[i].Trim(), displayName, System.Text.Encoding.UTF8);
                //添加收信人地址
                Message.To.Add(AddressTo);
            }


            //设置服务器
            smtpclient = new SmtpClient();
            smtpclient.Host = "smtp." + SMTP;
            smtpclient.Port = Port;
            smtpclient.Timeout = 20000;
            smtpclient.EnableSsl = true;
            smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpclient.UseDefaultCredentials = true;
            try
            {
                //验证发件人信息  
                smtpclient.Credentials = new NetworkCredential(Message.From.Address,  Pass);
            }
            catch (Exception)
            {
                return "信息验证失败";
            }
            try
            {
                smtpclient.Send(Message);    
                return "发送成功";
            }
            catch (Exception)
            {
                return "发送失败";
            }
        }
    }
}

2.调用服务:TestMessageService.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace MessageService
{
    public partial class TestMessageService : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) {
                this.smtp.Text = "126.com"; 
                this.senderAddress.Text = "你的邮箱地址";
                this.senderNick.Text = "baby";
                this.emailTitle.Text = "测试邮件";
                this.emailContent.Text = "测试内容";
            }
        }


        protected void submit_Click(object sender, EventArgs e)
        {
            EmailServiceReference.EmailServiceSoapClient cl = new EmailServiceReference.EmailServiceSoapClient();
            string str = cl.SendMessage(this.smtp.Text, this.senderAddress.Text, this.senderPassword.Text, this.senderNick.Text, this.emailTitle.Text, this.emailContent.Text,this.receiveAddress.Text);
            Response.Write("");
        }
    }
}

你可能感兴趣的:(消息推送)