欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

STMP发送邮件(C#)

程序员文章站 2022-04-20 18:25:32
记录一下使用SMTP协议发送邮件 注: 1、授权码需要去邮箱客户端里的POP3 /SMTP选项里开通即可获取授权码,不需要使用邮箱密码。使用授权码即可通过第三方程序调用其邮箱代为发送邮件。开通方法登陆邮箱即可看到,就不再说明(真不清楚也可自行百度一下)。 2、如需使用qq邮箱作为发送端,需要修改邮箱 ......

记录一下使用smtp协议发送邮件

public void mail()
{
    try
    {
        system.net.mail.smtpclient client = new system.net.mail.smtpclient();
        client.host = "smtp.163.com"; //使用163的smtp服务器发送邮件
        client.usedefaultcredentials = true;
        client.deliverymethod = system.net.mail.smtpdeliverymethod.network;
        client.credentials = new system.net.networkcredential("调用发送邮件的邮箱地址", "授权码");
        client.port = 25;
        
        system.net.mail.mailmessage message = new system.net.mail.mailmessage();
        message.from = new system.net.mail.mailaddress("moling_free@163.com");
        message.to.add("收件人邮箱");  
        message.subject = "标题";
        message.body = "正文";
        message.subjectencoding = system.text.encoding.utf8;
        message.bodyencoding = system.text.encoding.utf8;
        message.priority = system.net.mail.mailpriority.high;
        message.isbodyhtml = true;
        client.send(message);
    }
    catch(exception ex){ throw ex;}    

注:

1、授权码需要去邮箱客户端里的pop3 /smtp选项里开通即可获取授权码,不需要使用邮箱密码。使用授权码即可通过第三方程序调用其邮箱代为发送邮件。开通方法登陆邮箱即可看到,就不再说明(真不清楚也可自行百度一下)。

2、如需使用qq邮箱作为发送端,需要修改邮箱服务器为:smtp.qq.com。也需开通授权码的,qq邮箱里有类似的开通方式。

3、可能会发送失败(450、550错误码等),其主要原因是因为邮件服务器的反垃圾策略拦截了。可以检查标题、正文是否有敏感信息,检查发送频率是否过多,可能你的ip被标记了,可能过段时间就好了(可能几分钟,也可能几个小时,甚至一两天,这个看脸。。。)

关于详细的错误码可以参考:

4、被拦截的话可以在邮箱里设置白名单试试,不过不是都有用,感觉qq\163用的别人的邮件服务器就经常有这种问题,如果是公司内部使用的话建议搭建自己的邮件服务器。