我想从C ++程序发送电子邮件。
我想用sendmail来做。 那么,其实我不在乎如何,我只是发现,没有任何的smtp库工作…
通过googlefind的方法是这样的:
echo "This will go into the body of the mail." | mail -s "Subject line" [email protected]
问题是,邮件永远不会到达目的地。 现在我觉得奇怪:不应该有一个SMTP服务器的URL需要? 如smtp.my-provider.com:25?
Sendmail将尝试查找要发送到的域的MXlogging,因此您不必在默认情况下指定SMTP服务器的地址或主机名。 如果您确实需要强制某个特定地址,则可以通过DNS或Sendmail mailertable文件中的条目处理该地址。
您应该先尝试确定您的原始消息发生了什么。 尝试从您的应用程序发送并运行:
tail -f /var/log/maillog
您也可以使用“mailq”命令直接查看邮件队列。 如果该命令返回输出,则可尝试强制使用“sendmail -v -q”处理队列。 这将揭示错误的性质。
同时检查root用户的电子邮件以获取退回消息。
不需要SMTP服务器的DNS名称,因为mail命令期望与同一台计算机上的本地邮件传输代理(MTA)进行通信。 对于Linux来说,MTA通常是Sendmail。 如果需要通过ISP的邮件服务器路由发送邮件,sendmailconfiguration可能会将ISP的邮件服务器(MTA)的DNS名称包含为智能主机。
我会检查邮件日志,看看你的outboind邮件发生了什么。 它可能会排队等待发货,您可能会在适当的时候收到未送达报告。