• C#操作QQ邮箱发送电子邮件原来这么简单。。。。


      在贴代码之前,首先需要给QQ邮箱开服务IMAP/SMTP服务,详细开通方法见 "开通方法"(可能需要发送收费短信,所以只要开通这一个服务就好了)。

    这边主要就是为了一个服务的授权码,如下图:

                      

    服务开好之后,直接上代码了(一个邮件帮助类):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Mail;
    using System.Net.Mime;
    using System.Text;
    
    namespace Mail
    {
        public class SendMail
        {
            private MailMessage mailMessage;
            private SmtpClient smtpClient;
            private string password;//发件人密码  
            /// <summary>  
            /// 设置MailMessage的实例
            /// </summary>  
            /// <param name="To">收件人地址</param>  
            /// <param name="From">发件人地址</param>  
            /// <param name="Body">邮件正文</param>  
            /// <param name="Title">邮件的主题</param>  
            /// <param name="Password">发件人密码</param>  
            public SendMail(string[] To, string From, string Body, string Title, string Password)
            {
                mailMessage = new MailMessage();
                foreach (var item in To)
                {
                    mailMessage.To.Add(item);
                }
                mailMessage.From = new System.Net.Mail.MailAddress(From);
                mailMessage.Subject = Title;
                mailMessage.Body = Body;
                mailMessage.IsBodyHtml = true;
                mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
                this.password = Password;
            }
            /// <summary>  
            /// 添加附件  
            /// </summary>  
            public void Attachments(string Path)
            {
                string[] path = Path.Split(',');
                Attachment data;
                ContentDisposition disposition;
                for (int i = 0; i < path.Length; i++)
                {
                    data = new Attachment(path[i], MediaTypeNames.Application.Octet);//实例化附件  
                    disposition = data.ContentDisposition;
                    disposition.CreationDate = System.IO.File.GetCreationTime(path[i]);//获取附件的创建日期  
                    disposition.ModificationDate = System.IO.File.GetLastWriteTime(path[i]);//获取附件的修改日期  
                    disposition.ReadDate = System.IO.File.GetLastAccessTime(path[i]);//获取附件的读取日期  
                    mailMessage.Attachments.Add(data);//添加到附件中  
                }
            }
            /// <summary>  
            /// 异步发送邮件  
            /// </summary>  
            /// <param name="CompletedMethod"></param>  
            public void SendAsync(SendCompletedEventHandler CompletedMethod)
            {
                if (mailMessage != null)
                {
                    smtpClient = new SmtpClient();
                    smtpClient.EnableSsl = true;// 指定 System.Net.Mail.SmtpClient 是否使用安全套接字层 (SSL) 加密连接,必须在实例身份前面设置
                    smtpClient.UseDefaultCredentials = false;  
                    smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据  
                    smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                    smtpClient.Host = "smtp." + mailMessage.From.Host;
                    smtpClient.SendCompleted += new SendCompletedEventHandler(CompletedMethod);//注册异步发送邮件完成时的事件  
                    smtpClient.SendAsync(mailMessage, mailMessage.Body);
                }
            }
            /// <summary>  
            /// 发送邮件  
            /// </summary>  
            public void Send()
            {
                if (mailMessage != null)
                {
                    using (smtpClient = new SmtpClient())
                    {
                        smtpClient.EnableSsl = true;// 指定 System.Net.Mail.SmtpClient 是否使用安全套接字层 (SSL) 加密连接,必须在实例身份前面设置
                        smtpClient.UseDefaultCredentials = false;    
                        smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据            
                        smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                        smtpClient.Host = "smtp." + mailMessage.From.Host;
                        smtpClient.Send(mailMessage);
                        mailMessage.Attachments.Dispose();
                    }
                }
            }
        }
    }
    

      调用方法如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Mail
    {
        class Program
        {
            static void Main(string[] args)
            {
                string[] toArr = { "1234567890@qq.com" };
                var sbSql=new System.Text.StringBuilder();
                sbSql.Append("hauge无敌是多么的寂寞");
                SendMail sendmail = new SendMail(toArr, "0123456789@qq.com", sbSql.ToString(), "测试", "QQ邮箱服务授权码");
                sendmail.Send();           
            }
        }
    }
    

     这边的QQ邮箱服务授权码,就是上面开通的IMAP/SMTP服务的16位授权码。

  • 相关阅读:
    1024X768大图 (Wallpaper)
    (Mike Lynch)Application of linear weight neural networks to recognition of hand print characters
    瞬间模糊搜索1000万基本句型的语言算法
    单核与双核的竞争 INTEL P4 670对抗820
    FlashFTP工具的自动缓存服务器目录的功能
    LDAP over SSL (LDAPS) Certificate
    Restart the domain controller in Directory Services Restore Mode Remotely
    How do I install Active Directory on my Windows Server 2003 server?
    指针与指针变量(转)
    How to enable LDAP over SSL with a thirdparty certification authority
  • 原文地址:https://www.cnblogs.com/huage-1234/p/7850449.html
Copyright © 2020-2023  润新知