2017-03-31 45 views
-1

似乎php mail()功能的默認配置並不容易,而且它只是調用OS配置的sendmail函數來發送電子郵件。PHP mail()函數:用python或php腳本替換sendmail以支持SMTP

雖然安裝替代sendmail做的竅門,但配置這樣的程序還取決於操作系統和它的自我版本,很難控制。

所以我覺得如果有編寫Python或PHP的輕量級腳本,並使其爲可執行的方式,然後更換php.ini

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

sendmail的路徑,並支持設置任何SMTP帳戶在上面。

使用python發送郵件並不困難,但是有沒有辦法使輸入參數與sendmail命令相同或兼容?

這種方法有可能或存在一些現存的工作嗎?

+0

你真的,真的,真的需要尋找到[PHPMailer的(HTTPS ://github.com/PHPMailer/PHPMailer)。溝sendmail和'郵件()' – Machavity

+0

我維護一箇舊網站,並且不能更改mail()調用。我必須配置郵件,但我正在嘗試進行更改。有沒有辦法用PHPMailer編寫這樣的PHP腳本? –

+0

@Machavity最後,我發現一個存儲庫在GitHub中工作,謝謝。 –

回答

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('[email protected]','my_password') 
mail = email.message_from_string(stdin.read()) 
s.sendmail(
    mail['from'] or '[email protected]', 
    mail['to'] or mail['bcc'], 
    mail.as_string() 
) 
s.quit() 

只要把上面的腳本分成/usr/sbin/sendmailwhich sendmail實際到位,使其可執行chmod +x /usr/sbin/sendmail然後進行測試:

<?php 
mail(
    "[email protected]", 
    "Email Title", 
    "Email Content", 
    "Content-type: text/plain; charset=utf-8;\n" 
); 

夠簡單了!只需要安裝python。

如果所必要的(例如,你希望通過TLS端口587或直接25端口發送),只是改變了一些配置參考蟒蛇smtplib