【问题标题】:PHP mail() funciton: replace sendmail using python or php script to support SMTPPHP mail() 功能:使用 python 或 php 脚本替换 sendmail 以支持 SMTP
【发布时间】:2017-08-25 18:46:02
【问题描述】:

好像php默认的mail()函数不好配置,直接调用操作系统配置的sendmail函数发送邮件。

虽然安装一个替代的sendmail 可以解决问题,但配置这样的程序还取决于操作系统及其自身版本,难以控制。

所以我想如果有办法写一个python或php的轻量级脚本,并使其成为可执行文件,然后替换php.ini中的sendmail路径

; For Unix only.  You may supply arguments as well (default: "sendmail -t -
; http://php.net/sendmail-path
sendmail_path = /some/script/pymail.py

它支持在上面设置任何 SMTP 帐户。

使用python发送邮件并不难,但有没有办法让输入参数与sendmail命令相同或兼容?

这种方法是否可行或已有一些工作?

【问题讨论】:

  • 你真的,真的,真的需要调查PHPMailer。抛弃 sendmail 和 mail()
  • 我正在维护一个旧站点,并且无法更改 mail() 调用。我必须配置邮件,但我正在尝试进行更改。有没有办法使用 PHPMailer 编写这样的 php 脚本?
  • @Machavity 终于在 GitHub 上找到了一个可以运行的存储库,谢谢。
  • @Machavity 和我自己也编写了一个简单的 python 脚本,谢谢。
  • @Machavity 如果你不喜欢我的问题,你可能会喜欢我的回答:D

标签: php python email smtp sendmail


【解决方案1】:

终于找到了一些库来完成这项工作。

https://github.com/chupikov/sendmail.py

维基:https://github.com/chupikov/sendmail.py/wiki

最终的配置项如下所示:

sendmail_path = /home/user/bin/sendmail.py/sendmail.py -c /home/user/bin/sendmail.py/php-apache2.json

【讨论】:

    【解决方案2】:

    我自己也写了一个简单的脚本:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import smtplib
    from sys import stdin
    from email.mime.text import MIMEText
    import email
    
    s = smtplib.SMTP_SSL('smtp.mydomain.com:465')
    s.login('myaccount@mydomain.com','my_password')
    mail = email.message_from_string(stdin.read())
    s.sendmail(
        mail['from'] or 'myaccount@mydomain.com', 
        mail['to'] or mail['bcc'], 
        mail.as_string()
    )
    s.quit()
    

    只需将上述脚本放入/usr/sbin/sendmailwhich sendmail的实际位置,使其可执行chmod +x /usr/sbin/sendmail然后测试:

    <?php
    mail(
      "target@somemail.com",
      "Email Title",
      "Email Content",
      "Content-type: text/plain; charset=utf-8;\n"
    );
    

    够简单!!并且只需要安装 python。

    如果需要(即您想通过 TLS 端口 587 或直接端口 25 发送),只需更改一些引用 python smtplib 的配置

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2012-02-12
      • 1970-01-01
      • 2011-07-08
      • 2012-03-19
      • 2012-05-14
      相关资源
      最近更新 更多