邮件发送问题问题汇总

本地测试发送邮件,网上代码一大片,就先不介绍了;关于购买阿里云服务上进行发送邮件的,我们的坑有很多需要注意,因为阿里云对25端口进行屏蔽,我们只能选择994,网上网易企业邮箱的ssl端口是994,发送邮件的代码:

在这里插入图片描述
发送的问题包括:

1、System.Web.HttpException (0x80004005): 与服务器的传输连接失败。
 ---> System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Runtime.InteropServices.COMException: 与服务器的传输连接失败。

2、System.Web.HttpException (0x80004005): 邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available
 ---> System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Runtime.InteropServices.COMException: 邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available

解决上门的问题:
1、采用ssl加密进行发送邮件
2、一定记得邮箱授权码不要过期了

public static string SendMailForSSL(string FromMial, string ToMial, string AuthorizationCode, string File_Path, string Subject, string body)
{
    try
    {
        CDO.Message oMsg = new CDO.Message();
        CDO.Configuration conf = new ConfigurationClass();
        conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value = CdoSendUsing.cdoSendUsingPort;
        conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value = CdoProtocolsAuthentication.cdoBasic;
        conf.Fields[CdoConfiguration.cdoSMTPUseSSL].Value = true;
        #region 设置邮件服务器地址
        string Host = "";
        //在这里我使用的是163邮箱,所以是smtp.163.com,如果你使用的是qq邮箱,那么就是smtp.qq.com。
        // client.Host = "smtp.163.com";
        if (FromMial.Length != 0)
        {
            //根据发件人的邮件地址判断发件服务器地址   默认端口一般是25
            string[] addressor = FromMial.Trim().Split(new Char[] { '@', '.' });
            switch (addressor[1])
            {
                case "163":
                    Host = "smtp.163.com";
                    break;
                case "126":
                    Host = "smtp.126.com";
                    break;
                case "qq":
                    Host = "smtp.qq.com";
                    break;
                case "gmail":
                    Host = "smtp.gmail.com";
                    break;
                case "hotmail":
                    Host = "smtp.live.com";//outlook邮箱                      
                    break;
                case "foxmail":
                    Host = "smtp.foxmail.com";
                    break;
                case "chavomail":
                    Host = "smtp.qiye.163.com";//163企业邮箱
                    break;
                case "sina":
                    Host = "smtp.sina.com.cn";
                    break;
                default:
                    Host = "smtp.exmail.qq.com";//qq企业邮箱
                    break;
            }
        }
        #endregion
        conf.Fields[CdoConfiguration.cdoSMTPServer].Value = Host;//必填,而且要真实可用   
        conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value = 465;//465特有
        conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value = "<" + FromMial + ">";
        conf.Fields[CdoConfiguration.cdoSendUserName].Value = FromMial;//真实的邮件地址   
        conf.Fields[CdoConfiguration.cdoSendPassword].Value = AuthorizationCode;   //为邮箱密码,必须真实   


        conf.Fields.Update();

        oMsg.Configuration = conf;
        oMsg.HTMLBody = body;

        oMsg.Subject = Subject;

        oMsg.From = FromMial;
        oMsg.To = ToMial;
        if (File_Path != "" && File_Path != null)
        {
            //将附件添加到邮件
            //ADD attachment.
            //TODO: Change the path to the file that you want to attach.
            oMsg.AddAttachment(File_Path, "", "");

        }
        oMsg.Send();
        return "";
    }
    catch (System.Net.Mail.SmtpException ex)
    {
        return ex.ToString();
    }
}

方法大家一看就知道,还有个问题需要进行注意,每个邮箱的授权码是会过期的,如果碰到不能发送邮件了,一定先去看下授权码是不是过期了,授权码设置如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星海设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值