国内使用smtp.163.com发邮件(未加密/465SSL)

public class Email
{
    public Email()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    /// <summary>
    /// 初始化信件相关信息
    /// </summary>
    /// <param name="address"></param>
    /// <returns></returns>
    public MailMessage InitMailMessage(string address)
    {
        MailMessage mail = new MailMessage();

        mail.From = new MailAddress("你的邮箱"); //发件人
        mail.To.Add(address); //收件人
        mail.Subject = "邮件发送测试"; //主题
        mail.Body = "邮件测试内容"; //内容

        //邮件主题和正文的编码格式

        mail.SubjectEncoding = System.Text.Encoding.UTF8;
        mail.BodyEncoding = System.Text.Encoding.UTF8;


        mail.IsBodyHtml = true; //邮件正文允许html编码
        mail.Priority = MailPriority.Normal; //优先级

        //密送——就是将信密秘抄送给收件人以外的人,所有收件人看不到密件抄送的地址
        // mail.Bcc.Add("@qq.com");


        //抄送——就是将信抄送给收件人以外的人,所有的收件人可以在抄送地址处看到此信还抄送给谁
        //mail.CC.Add("beilongkechuan@163.com");

        //mail.Attachments.Add(new Attachment("D:\\1.wps")); //添加附件

        return mail;

    }
    /// <summary>
    /// 发送邮件
    /// </summary>
    /// <returns></returns>
    public bool SendEmail(string tomail)
    {
        SmtpClient client = new SmtpClient();

        //获取或设置用于验证发件人身份的凭据。授权码非密码
        client.Credentials = new System.Net.NetworkCredential("你的邮箱", "授权码非密码");

        //经过ssl(安全套接层)加密,163邮箱SSL协议端口号为465/994,关闭SSL时端口为25,
        //qq邮箱SSL协议端口号为465或587,关闭SSL时端口同样为25,不过用SSL加密后发送邮件都失败,具体原因不知
        //client.EnableSsl = true;
        client.Port = 25; //端口号
                          //client.Host = "smtp.qq.com"; //获取或设置用于 SMTP 事务的主机的名称或 IP 地址
        client.Host = "smtp.163.com";//使用163的SMTP服务器发送邮件
        try
        {
            client.Send(InitMailMessage(tomail));
            return true;

        }
        catch (System.Net.Mail.SmtpException ex)
        {
            return false;
        }


    }
}

Email mail = new Email();
if (mail.SendEmail("836678868@qq.com"))
{
    Response.Write("<script language='javascript'> alert('发送成功!')</script>");
}
else
{
    Response.Write("<script language='javascript'> alert('发送失败!')</script>");

常见问题:

163邮箱发送邮件碰到:System.Net.Mail.SmtpException: 不允许使用邮箱名称。 服务器响应为:authentication is required这个问题我的解决方法是:设置发件邮箱的授权码

提供一个支持ssl发邮件成功的demo, 具体内容见注释

public void SendMailKit(string[] tos)
{
    var message = new MimeMessage();
    message.From.Add(new MailboxAddress("发件人名称", email));
    message.To.Add(new MailboxAddress("收件人名称", to));

    message.Subject = "邮件标题";  //邮件标题
    var builder = new BodyBuilder
    {
        //TextBody = "Hey geffzhang<br>DennisDong"//不支持Html
        HtmlBody = "Hey geffzhang<br>DennisDong"//支持Html
    };

    //添加附件
    //builder.Attachments.Add($@"{Directory.GetCurrentDirectory()}\1.png");//包含图片附件,或者正文中有图片会被当成垃圾邮件退回,所以不建议放图片内容(跟Mail类库框架无关)
    //builder.Attachments.Add($@"{Directory.GetCurrentDirectory()}\ConsoleApp1.exe.config");
    message.Body = builder.ToMessageBody();

    using (var client = new SmtpClient())
    {
        client.ServerCertificateValidationCallback = (s, c, h, e) => true;

        var mSendMail = email;
        var mSendPwd = auth;//163和qq都是授权码,不是邮箱密码
        client.Connect("smtp.163.com", 465, true);//网易、QQ支持 25(未加密),465和587(SSL加密)

        client.Authenticate(mSendMail, mSendPwd);

        try
        {
            client.Send(message);//发送邮件
            client.Disconnect(true);
        }
        catch (SmtpCommandException ex)
        {
            Console.WriteLine(ex.ErrorCode);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老朱自强不息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值