GitLab中使用BLAT发带附件邮件遇SMTP套接字错误的解决方法
解决BLAT发送邮件时的"Not a socket for a SMTP server"错误
这个错误其实很好理解——你现在的BLAT命令只说了要发什么内容、发给谁、带什么附件,但完全没告诉它该通过哪个SMTP服务器来发送邮件,它自然没法建立有效的socket连接,就会报这个错。咱们一步步来搞定:
1. 先给BLAT配置好SMTP基础信息(一次性操作)
首先得让BLAT知道你的发件邮箱对应的SMTP服务器参数,以你用的Yahoo邮箱为例,它的SMTP服务器是smtp.mail.yahoo.com,端口587,还需要SSL加密。
先执行一次配置命令(以后发邮件就不用重复输这些参数了):
blat -install smtp.mail.yahoo.com santoshkumar.angadi@yahoo.com 587
如果你的Yahoo邮箱开启了两步验证,直接用登录密码会失败,得去Yahoo账号设置里生成应用专用密码,然后把密码加上:
blat -install smtp.mail.yahoo.com santoshkumar.angadi@yahoo.com 587 -pw "你的Yahoo应用专用密码"
2. 修正你的发送命令
配置完成后,再运行你的发送命令,记得加上发件人参数-f(和配置的邮箱保持一致):
blat -subject "IP is not pingable" -body "please check the attachment for the error logs" -attach C:\Temp\error.txt -to santoshkumar.angadi@yahoo.com -f santoshkumar.angadi@yahoo.com
3. 不想提前配置?直接在命令里带全SMTP参数
要是你不想做一次性配置,每次发邮件时直接把所有SMTP参数都带上也行:
blat -subject "IP is not pingable" -body "please check the attachment for the error logs" -attach C:\Temp\error.txt -to santoshkumar.angadi@yahoo.com -f santoshkumar.angadi@yahoo.com -server smtp.mail.yahoo.com -port 587 -pw "你的Yahoo应用专用密码" -ssl
这里的-ssl参数必须加,因为Yahoo的SMTP要求强制SSL加密。
额外提醒
- 要是你的GitLab是企业内部环境,优先用公司内部的SMTP服务器(找IT要地址、端口和认证信息),比公共邮箱更稳定
- 先测试不带附件的简单邮件,确认SMTP连接没问题后再添加附件
- 检查下防火墙/杀毒软件有没有拦截BLAT访问587端口
内容的提问来源于stack exchange,提问作者Santosh Kumar




