似乎默认的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
命令兼容?
这种方法是否可能或有一些现有的工作?
答案 0 :(得分:0)
最后找到了一些图书馆来完成这项工作。
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
答案 1 :(得分:0)
我自己也制作了一个简单的脚本:
#!/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/sendmail
或which 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