C#使用阿里邮箱发送邮件给QQ邮箱

时间:2024-03-09 19:35:39

相信发送邮件通知大伙都遇到过,大部分邮箱收取别人发的邮件都没什么问题,少部分会出现发不出或收不到等问题;比如qq邮箱,你使用126或者雅虎等其他邮件服务器发送邮件给qq普通到方法行不通,要么说没有权限发不出,要么你发出去了他没收到。

我在网上也找了很久大部分人说是要设置qq邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务生成授权码,其实他们说的并不是这个问题。我们这说的问题是,即使你设置了授权码qq邮件还是发布出去,这是要干嘛咯,请看下面的代码:

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mailTo">要发送的邮箱</param>
        /// <param name="mailSubject">邮箱主题</param>
        /// <param name="mailContent">邮箱内容</param>
        /// <returns>返回发送邮箱的结果</returns>
        public static bool SendEmailMethod(string mailTo, string mailContent, string Name, string mailSubject)
        {
            bool isSuccess = false;
            try
            {
                if (string.IsNullOrEmpty(mailTo))
                {
                    string remarklog1 = string.Concat("由于没有有效的邮箱地址导致用户", Name, "有一封主题为:", mailSubject, "。内容为:", mailContent, "的邮件发送失败,原因:Email不能为空");
                    throw new Exception(remarklog1);
                }
                else
                {
                    if (!Comm.IsEmail(mailTo))
                    {
                        string remarklog1 = string.Concat("由于没有有效的邮箱地址导致用户", Name, "有一封主题为:", mailSubject, "。内容为:", mailContent, "的邮件发送失败,原因:Eamil=", mailTo, "必须是有效格式的邮件地址");
                        throw new Exception(remarklog1);
                    }

                }
                // 设置发送方的邮件信息,例如使用网易的smtp
                string mailFrom = ConfigurationManager.AppSettings["mailFrom"]; //登陆用户名
                System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(mailFrom);//邮件发送人地址     
                System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(mailTo);//收件人地址                
                System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(from, to);//邮件对象                
                mailMessage.Subject = mailSubject;
                mailMessage.Body = mailContent;
                mailMessage.SubjectEncoding = Encoding.UTF8;//正文编码
                mailMessage.BodyEncoding = Encoding.UTF8;//正文编码
                mailMessage.IsBodyHtml = true;//设置为HTML格式
                mailMessage.Priority = MailPriority.Low;//优先级      
                System.Net.Mail.SmtpClient mySmth = new System.Net.Mail.SmtpClient();//设置服务器                
                mySmth.Send(mailMessage);//发送邮件             
                mailMessage.Dispose();

                isSuccess = true;
            }
            catch (Exception ex)
            {
                isSuccess = false;
            }
            return isSuccess;
        }

注意:还要配置web.config,在appSetting节点下,代码如下:

<configuration>
  <appSettings>

    <!--邮件配置信息-->
  
    <add key="mailsmtpServer" value="smtp.xxx.com.cn" />
    <add key="mailFrom" value="postmaster@xxx.com.cn" />
    <add key="mailPassword" value="发件邮箱密码" />  
   
    <!--/邮件配置信息-->
</appSettings>

<system.net>
<mailSettings>
<smtp from="Emailname">
<network host="smtp.yunanfang.com.cn" userName="postmaster@xxx.com.cn" password="发件邮箱密码" port="25" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>

</configuration>

 

其中system.net为必须配置,需要特别注意。

然后就可以调用方法:

SendEmailMethod("281746212@qq.com", "金典台词:‘广东翻戏党啦’", "收件人姓名", "邮件主题");
代码经测试无误!

若有不对敬请留言指正!!!