微信扫一扫打赏支持

阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110]

阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110]

一、总结

一句话总结:

端口号port 改成 465,加密方式 encryption 改用 ssl

 

 

 

二、Connection could not be established with host smtp.163.com

转自或参考:Connection could not be established with host smtp.163.com 阿星小栈
https://blog.csdn.net/u010244476/article/details/83190154

 

laravel阿里云屏蔽25,无法发送邮件的解决方案

本地测试邮件可以发送成功,但是部署在阿里云服务器上之后,并且在安全组中配置了25端口的出入后还是不行。

原因是:

阿里云服务器封禁了25

解决办法

  端口号port 改成 465

  加密方式 encryption 改用 ssl

也就是加入了SSL验证

 

 

 

 

三、laravel中成功配置实例

 

 

 

 

三、阿里云服务器25邮件端口问题

转自或参考:阿里云服务器25邮件端口问题
https://blog.csdn.net/weixin_30780649/article/details/101627176


配置示例:

spring:
  mail:
    host: smtp.163.com
    username: 1111111@163.com
    password: aaaaaaaa
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          ssl:
            trust: smtp.163.com
          socketFactory:
            class: 'javax.net.ssl.SSLSocketFactory'
            port: 465
          starttls:
            enable: true
            required: true

转载于:https://www.cnblogs.com/javabg/p/11398950.html

 

四、阿里云服务器邮件发送

转自或参考:阿里云服务器邮件发送
https://www.cnblogs.com/eye-like/p/10103783.html

一个邮件发送的功能,本机调试无问题,但发布到阿里云服务器后邮件发送功能失败。

网上查了下大概是说阿里云把发送邮件的25端口禁用掉了

那么解决方式一就是向阿里云申请开放25端口,但具体如何申请,并未深入操作。

解决方式二:使用邮件服务商的加密端口。

但是当使用465端口时,先后试验过smtp.mxhichina.com(阿里企业邮箱)、smtp.163.com(163邮箱)、smtp.qq.com(qq邮箱)三种发送方式,均失败!

再尝试考虑SSL加密SMTP通过587端口进行发件,发送成功。

以下为配置及源码

<?xml version="1.0" encoding="utf-8"?>
<xml>
  <!--收件人邮箱地址-->
  <ConsigneeAddress>pro@163.com</ConsigneeAddress>
  <!--抄送邮箱地址,多个邮箱间用'|'分割-->
  <BccAddress></BccAddress>
  <!--收件人名称-->
  <ConsigneeName>浦泓医疗</ConsigneeName>
  <!--发件人名称-->
  <ConsigneeHand>微商城</ConsigneeHand>
  <!--邮件主题-->
  <ConsigneeTheme>睛彩眼界商城订单</ConsigneeTheme>
  <!--发件邮件服务器的Smtp设置-->
  <SendSetSmtp>smtp.qq.com</SendSetSmtp>
  <!--发件人的邮件-->
  <SendEmail>124@qq.com</SendEmail>
  <!--发件人的邮件密码-->
  <SendPwd>boblunxyluwdjjbh</SendPwd>
  <!--发件端口号-->
  <port>587</port>
  <!--邮件内容-->
  <SendContent>您有新的订单消息</SendContent>
  <!--后台管理地址-->
  <serverAddress>http://xxx/admin/login</serverAddress>
</xml>
邮箱配置

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Xml;

namespace MallServer.Utility
{
    public class emailhelper
    {
        public static bool MailSend(emailpara para)
        {
            try
            {
               
                EmailParameterSet EPSModel = new EmailParameterSet();
                string filepath = System.Web.HttpContext.Current.Server.MapPath("\\Files\\email\\email.xml");
                XmlDocument xml = common.xmlHelper.getXML(filepath);
                string BccAddress = xml.SelectSingleNode("xml").SelectSingleNode("BccAddress").InnerText;//邮件抄送地址
                string portvalue = xml.SelectSingleNode("xml").SelectSingleNode("port").InnerText; //发送邮件的端口
                int port = 587;
                int.TryParse(portvalue, out port);
                string serverAddress= xml.SelectSingleNode("xml").SelectSingleNode("serverAddress").InnerText;//提示跳转的管理地址
              
                EPSModel.ConsigneeAddress = xml.SelectSingleNode("xml").SelectSingleNode("ConsigneeAddress").InnerText;
                EPSModel.ConsigneeName = xml.SelectSingleNode("xml").SelectSingleNode("ConsigneeName").InnerText;//
                EPSModel.ConsigneeHand = xml.SelectSingleNode("xml").SelectSingleNode("ConsigneeHand").InnerText;//发件人标题
                EPSModel.ConsigneeTheme = xml.SelectSingleNode("xml").SelectSingleNode("ConsigneeTheme").InnerText;//收件人的主题
                EPSModel.SendSetSmtp = xml.SelectSingleNode("xml").SelectSingleNode("SendSetSmtp").InnerText;//发件邮件服务器的Smtp设置
                EPSModel.SendEmail = xml.SelectSingleNode("xml").SelectSingleNode("SendEmail").InnerText;//发件人的邮件
                EPSModel.SendPwd = xml.SelectSingleNode("xml").SelectSingleNode("SendPwd").InnerText;
                EPSModel.SendContent = xml.SelectSingleNode("xml").SelectSingleNode("SendContent").InnerText;

                if (para.ConsigneeTheme != "") {
                    EPSModel.ConsigneeTheme = para.ConsigneeTheme;
                }
                if (para.SendContent != "") {
                    EPSModel.SendContent = para.SendContent+"\r\n查看详细请登陆 "+serverAddress;           
                }


                //确定smtp服务器端的地址,实列化一个客户端smtp 
                System.Net.Mail.SmtpClient sendSmtpClient = new System.Net.Mail.SmtpClient(EPSModel.SendSetSmtp);//发件人的邮件服务器地址
                //构造一个发件的人的地址
                System.Net.Mail.MailAddress sendMailAddress = new MailAddress(EPSModel.SendEmail, EPSModel.ConsigneeHand, Encoding.UTF8);//发件人的邮件地址和收件人的标题、编码

                //构造一个收件的人的地址
                System.Net.Mail.MailAddress consigneeMailAddress = new MailAddress(EPSModel.ConsigneeAddress, EPSModel.ConsigneeName, Encoding.UTF8);//收件人的邮件地址和收件人的名称 和编码

                //构造一个Email对象
                System.Net.Mail.MailMessage mailMessage = new MailMessage(sendMailAddress, consigneeMailAddress);//发件地址和收件地址
                if (BccAddress != "")
                {
                    string[] addressArr = BccAddress.Split('|');
                    for (int i = 0; i < addressArr.Length; i++)
                    {
                        mailMessage.Bcc.Add(new MailAddress(addressArr[i]));//添加抄送
                    }
                }

                mailMessage.Subject = EPSModel.ConsigneeTheme;//邮件的主题
                mailMessage.BodyEncoding = Encoding.UTF8;//编码
                mailMessage.SubjectEncoding = Encoding.UTF8;//编码
                mailMessage.Body = EPSModel.SendContent;//发件内容
                mailMessage.IsBodyHtml = false;//获取或者设置指定邮件正文是否为html
               

                //设置邮件信息 (指定如何处理待发的电子邮件)
                sendSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定如何发邮件 是以网络来发
                sendSmtpClient.EnableSsl = true;//服务器支持安全接连,安全则为true
                sendSmtpClient.Port = port;
                sendSmtpClient.UseDefaultCredentials = true;//是否随着请求一起发

                //用户登录信息
                NetworkCredential myCredential = new NetworkCredential(EPSModel.SendEmail, EPSModel.SendPwd);
                sendSmtpClient.Credentials = myCredential;//登录
                
                sendSmtpClient.Send(mailMessage);//发邮件
                return true;
            }
            catch (Exception ex)
            {
                //common.CommonMethod.WriteTxt("ex.message:"+ex.Message);
                //common.CommonMethod.WriteTxt("ex.Source:" + ex.Source);
                //common.CommonMethod.WriteTxt("ex.StackTrace:" + ex.StackTrace);
                return false;
            }

        }
    }
}
发邮件

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MallServer.Utility
{
    public class emailpara
    {
        public string ConsigneeTheme { get; set; }
        public string SendContent { get; set; }

    }
}
emailpara

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MallServer.Utility
{
    public class EmailParameterSet
    {
        /// <summary>
        /// 收件人的邮件地址 
        /// </summary>
        public string ConsigneeAddress { get; set; }

        /// <summary>
        /// 收件人的名称
        /// </summary>
        public string ConsigneeName { get; set; }

        /// <summary>
        /// 收件人标题
        /// </summary>
        public string ConsigneeHand { get; set; }

        /// <summary>
        /// 收件人的主题
        /// </summary>
        public string ConsigneeTheme { get; set; }

        /// <summary>
        /// 发件邮件服务器的Smtp设置
        /// </summary>
        public string SendSetSmtp { get; set; }

        /// <summary>
        /// 发件人的邮件
        /// </summary>
        public string SendEmail { get; set; }

        /// <summary>
        /// 发件人的邮件密码
        /// </summary>
        public string SendPwd { get; set; }
        /// <summary>
        /// 发件内容
        /// </summary>
        public string SendContent { get; set; }
    }
}
EmailParameterSet

 

 

说明:

实例中使用的是qq邮箱,但邮箱的密匙非qq的密码,而是邮箱的独立密码,可以进入qq邮箱,然后在设置-》账户里面设置

并且要保证邮箱的POP3/SMTP服务开启,同样是进入qq邮箱,然后在设置-》账户里面设置

 

引用:

https://www.cnblogs.com/axinno1/p/8303130.html

 

posted @ 2019-11-19 23:24  范仁义  阅读(3081)  评论(1编辑  收藏  举报