使用SSL加密465端口发送邮件

基于安全考虑,云虚拟主机的25端口默认封闭,如果您有发送邮件的需求,建议使用SSL加密端口(465端口)来对外发送邮件。本文通过提供.NET、PHP和ASP样例来介绍使用SSL加密端口发送邮件的方法,其他语言的实现思路与本文介绍的方法基本相同。

背景信息

  • 基本原理

    使用SSL加密端口发送邮件的基本原理与本地主机使用客户端(例如Outlook等)连接邮箱服务器发送邮件一致。即主机通过连接外部邮箱的发邮件服务器,并通过程序配置的账号密码鉴权验证来发送邮件,而不是服务器本身来发送邮件。

  • 实现要点

    使用SSL加密端口发送邮件的基本实现方式与使用25端口发送邮件一致,但改为SSL加密协议后,需要特别注意以下几点:

    • 编写好的程序调用外部邮箱发送邮件时,邮箱服务器需支持SSL加密功能。

    • 主机连接邮箱服务器时,请在编写好的程序中启用SSL加密协议。

    • 将连接外部邮箱服务器的端口改为SSL加密端口(465端口),具体配置信息可以向邮箱服务商咨询。

使用限制

Windows操作系统增强版云虚拟主机不支持发送邮件。

前提条件

确认PHP函数的fsockopen参数为启动状态。

说明

PHP函数的fsockopen参数默认为启动状态。如需修改该参数状态,具体操作,请参见设置PHP.INI参数

操作步骤

  1. 联系邮箱服务商获取使用SSL加密方式发送邮件的配置信息。

    涉及的主要配置项如下所示:

    配置项

    说明

    发邮件服务器地址

    输入服务器邮箱地址。例如,a***.example.com。

    发邮件服务器端口号

    加密端口一般是465端口。

    邮箱用户名

    可能是Email地址,也可能是Email地址前缀,具体可咨询邮箱服务商。

    邮箱客户端密码

    部分邮箱服务商Web浏览器登录界面的登录密码和客户端密码并不相同,可能需要单独设置,具体可咨询邮箱服务商。

  2. 在本地主机使用客户端软件(Outlook、Foxmail等),使用已获取的邮件配置信息设置本地客户端,并发送邮件测试。

    说明

    如果邮件发送失败,表示获取的配置信息不正确,您需要联系邮箱服务商解决。

  3. 根据实际的开发语言选择对应的程序样例,并将程序样例下载到本地。

    程序样例如下所示:

    • .NET源程序样例

    • PHP源程序样例

    • ASP源程序样例

  4. 使用已通过测试的配置信息,编写程序样例中的邮箱服务器配置项。

  5. 将编写好的程序通过FileZilla工具上传到云虚拟主机上,并实际发送邮件测试。

    程序上传到云虚拟主机的具体操作,请参见通过FileZilla管理网站程序文件

//初始化邮件类 void InitEmail(C01waSendMail* m_globalEmail,String sendermail,String sender,String senderpwd,String srv,int port = 25,bool bSsl = false) { m_globalEmail->m_Auth = CPJNSMTPConnection::AuthenticationMethod::AUTH_AUTO; m_globalEmail->m_bAutoDial = true; m_globalEmail->m_bSSL = bSsl; m_globalEmail->m_sUsername = sender.c_str(); m_globalEmail->m_sAddress = sendermail.c_str(); m_globalEmail->m_sPassword = senderpwd.c_str(); m_globalEmail->m_sHost = srv.c_str(); m_globalEmail->m_nPort = port; m_globalEmail->m_sEncodingFriendly = _T("Chinese Simplified (GB2312)"); m_globalEmail->m_sEncodingCharset = _T("gb2312"); m_globalEmail->m_bMime = 1; m_globalEmail->m_bHTML = 1; m_globalEmail->m_Priority = CPJNSMTPMessage::PRIORITY::NormalPriority; m_globalEmail->m_bDSN = FALSE; m_globalEmail->m_bDSNSuccess = FALSE; m_globalEmail->m_bDSNFailure = FALSE; m_globalEmail->m_bDSNDelay = FALSE; m_globalEmail->m_bDSNHeaders = FALSE; m_globalEmail->m_bDNSLookup = FALSE; } //发送邮件 void SendEmail(const char* recvemail,const char* subject,const char* body,const char * sCC=NULL,const char * bCC = NULL,const char * attach = NULL) { //初始化邮箱 //注意释放内存 C01waSendMail *m_globalEmail = new C01waSendMail; if(strlen(m_con1.m_eamil)>0&&strlen(m_con1.m_pwd)&&strlen(m_con1.m_smtpsrv)&&m_con1.port>0) { char * p = strdup(m_con1.m_eamil); char * pp = strstr(p,"@"); if(pp>0) pp[0] = '\0'; InitEmail(m_globalEmail,m_con1.m_eamil,p,m_con1.m_pwd,m_con1.m_smtpsrv,m_con1.port,m_con1.ssl); free(p); if(subject>0) m_globalEmail->m_sSubject.Format("%s",subject); if(sCC>0) m_globalEmail->m_sCC.Format("%s",sCC); if(bCC>0) m_globalEmail->m_sBCC.Format("%s",bCC); if(body>0) m_globalEmail->m_sBody.Format("%s",body); if(attach>0) m_globalEmail->m_sFile.Format("%s",attach); if(recvemail>0) m_globalEmail->m_sTo.Format("%s",recvemail); m_globalEmail->SendEmail(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

soso1968

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

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

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

打赏作者

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

抵扣说明:

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

余额充值