zoukankan      html  css  js  c++  java
  • 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位授权码。

  • 相关阅读:
    HDOJ 1207 汉诺塔II
    [转]写代码的小女孩
    POJ Subway tree systems
    HDOJ 3555 Bomb (数位DP)
    POJ 1636 Prison rearrangement (DP)
    POJ 1015 Jury Compromise (DP)
    UVA 10003
    UVA 103 Stacking Boxes
    HDOJ 3530 Subsequence
    第三百六十二、三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/huage-1234/p/7850449.html
Copyright © 2011-2022 走看看