腾讯云服务器发送邮件的坑

说实话有点后悔用腾讯云做跨境电商服务器了跟AWS那差距不是一星半点儿,虽然便宜但是很多隐性问题会一直困扰你。比如邮件问题,以下我用的是centos7 自带的sendmail问题,请对号入座。

你以为开通25端口就万事大吉了吗?非也,开通25只能给163发发邮件,其他邮箱没一个收的到。那么至少就说明发送邮件是没问题的,问题在于对方拒收或者其他等等。

服务器自发邮件一般会被拒收特别是国外的邮箱,有的是对方需要反向解析DNS,或者监控你的流量。也可能是之前这个IP已经被别人玩烂了,当然我的阴谋论是美帝根本不待见中国企业,封的就是你23333

特意测试了一下结果如下:

邮件服务肯定是没问题的,因为邮件确实发送了,症状如下:

1、国内的163可以正常收到,QQ邮箱收不到;

2、国外Yahoo什么的基本上是被退信了,说是服务器流量异常;

3、gmail 则显示服务器地址非法之类的错误;

执行命令:mailq可以看到如下队列信息基本上是退信的:

很显然再去搭建一个邮件服务器代价高昂。那么就只能利用SMTP代发了。

以下我做了一些尝试,在这之前你需要熟悉centos的一些基本命令和服务:


查看队列中的邮件 mailq
查看配置:postconf -n

删除队列中的邮件 postsuper -d ALL

队列中邮件重新发送postqueue -f

关闭邮件服务 /etc/init.d/postfix stop

邮件日志 /var/log/maillog

测试邮件mail -s test test@alanhou.org,若出现如下报错,请执行yum install mailx -y

-bash: mail: command not found

测试25端口 telnet alt2.gmail-smtp-in.l.google.com 25(这里以gmail为例,可选择其它网站)

Linux centos 运行telnet命令,出现下面的错误提示:

[root@localhost ~]# telnet 127.0.0.1
-bash: telnet: command not found

解决方法: 安装telnet服务

centos、ubuntu安装telnet命令的方法.

    yum list telnet*              列出telnet相关的安装包
    yum install telnet-server          安装telnet服务
    yum install telnet.*           安装telnet客户端

 

163的smtp

自己去163申请开通smtp,需要用到手机,会有一个单独的smtp密码的,由于国内的比较废材我就不发申请步骤了

set from= 你的邮箱
set smtp=smtp.163.com
set smtp-auth-user=你的邮箱
set smtp-auth-password=smtp密码不太填你邮箱的密码
set smtp-auth=login
encryption: ssl
mailer_port: 465

 执行命令:vi /etc/mail.rc 把上面的内容复制粘贴到最下面保存退出;

执行命令:echo "hello啊啊啊 xxxx.com" | mail -v -s "" 你的邮箱地址

测试邮件发送。

测试结果:国内邮箱都可以收到,国外的收不到,估计是被墙了。

QQ邮箱smtp

申请跟163类似

set from=你的邮箱
set smtp=smtp.qq.com
set smtp-auth-user=你的邮箱
set smtp-auth-password=smtp密码不是你的邮箱密码
set smtp-auth=login
encryption: ssl
mailer_port: 465

测试结果:国内邮箱都可以收到,国外的收不到,估计是被墙了。

GAMIL SMTP

申请比较容易也不需要什么独立密码

申请好之后去个人中心降低访问权限

https://myaccount.google.com/security

 

 

set smtp=smtps://smtp.gmail.com:465
set smtp-auth=login
set smtp-auth-user=你的邮箱
set smtp-auth-password=你的邮箱密码
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

设置好之后执行测试你可能会出现以下错误:说你密码不对什么的,但是你的密码是对的。

可以尝试访问以下网址解锁以下,或者再把那什么 低访问权限的流程走一遍。

https://accounts.google.com/b/0/DisplayUnlockCaptcha

 

### 使用 C# 和腾讯云 SMTP 服务发送电子邮件 为了实现通过 C# 发送邮件的功能,可以利用 `System.Net.Mail` 命名空间中的类来构建邮件并设置相应的属性。下面是一个完整的例子,展示了如何配置和使用腾讯云SMTP 服务器来发送一封简单的 HTML 邮件[^1]。 ```csharp using System; using System.Net; using System.Net.Mail; public class EmailSender { public static void SendEmail() { string smtpServer = "smtp.exmail.qq.com"; // 腾讯企业邮箱SMTP地址 int portNumber = 465; // SSL端口通常是465 bool enableSSL = true; // 是否启用SSL加密 MailMessage mailMsg = new MailMessage(); SmtpClient client = new SmtpClient(smtpServer, portNumber); try { // 设置发信人的账号密码 NetworkCredential credentials = new NetworkCredential("your_email@domain", "password"); // 添加收件人、抄送人以及密送人 mailMsg.From = new MailAddress("your_email@domain"); mailMsg.To.Add(new MailAddress("recipient@example.com")); mailMsg.CC.Add(new MailAddress("cc_recipient@example.com")); mailMsg.Bcc.Add(new MailAddress("bcc_recipient@example.com")); // 主题与正文内容 mailMsg.Subject = "测试邮件"; mailMsg.Body = "<h1>这是一封来自C#程序的HTML格式邮件</h1>"; mailMsg.IsBodyHtml = true; // 启用SSL安全连接 client.EnableSsl = enableSSL; client.UseDefaultCredentials = false; client.Credentials = credentials; Console.WriteLine("正在尝试发送..."); client.Send(mailMsg); Console.WriteLine("邮件已成功发出!"); } catch (Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); } } } ``` 此代码片段中包含了创建 `MailMessage` 对象的过程,并设置了必要的参数如发件人、接收者列表、主题及消息体等内容;同时也指定了用于身份验证的信息以便能够顺利登录到指定的 SMTP 服务器上完成实际的数据传输操作[^2]。 需要注意的是,在正式环境中应该妥善保管好自己的账户凭证信息,不要将其硬编码在源码里,而是考虑采用更安全的方式比如环境变量或者专门的服务来进行管理[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值