阿里云服务器发送邮件: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+" 查看详细请登陆 "+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; } } }
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; } } }
说明:
实例中使用的是qq邮箱,但邮箱的密匙非qq的密码,而是邮箱的独立密码,可以进入qq邮箱,然后在设置-》账户里面设置
并且要保证邮箱的POP3/SMTP服务开启,同样是进入qq邮箱,然后在设置-》账户里面设置
引用: