2012-01-10 74 views
3

當我改變提供商時,我總是必須讓sendmail工作,這是一個真正的拖延。PHP郵件()函數替換?

在我的PHP代碼中是否可以使用任何免費提供程序來發送相同的變量,如用於註冊驗證的密鑰和內容?

我試着在谷歌上看,但我只發現有形式生成器的東西,這不是我所需要的。

+0

所以你想要代碼發送電子郵件或電子郵件提供商?標題與該問題不符。 – 2012-01-10 11:39:58

回答

2

現在Swift Mailer是最適合PHP的郵件解決方案之一。它高度模塊化,可以輕鬆進行配置以滿足您的需求。您可以定義multiple transports(例如,在配置文件中)並在更改提供程序時使用您需要的那個。

下面是來自docs一個例子:

require_once 'lib/swift_required.php'; 

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25) 
    ->setUsername('your username') 
    ->setPassword('your password') 
    ; 

/* 
You could alternatively use a different transport such as Sendmail or Mail: 

// Sendmail 
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs'); 

// Mail 
$transport = Swift_MailTransport::newInstance(); 
*/ 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 
    ->setBody('Here is the message itself') 
    ; 

// Send the message 
$result = $mailer->send($message); 
1

你需要的是一個外向身份驗證的SMTP服務器,以便您不使用的主機之一,不必每次更改的細節。

看看AuthSMTP(有很多其他的網站提供這個),然後使用諸如PHPMailer或Swift Mailer之類的東西發送帶有認證的電子郵件。

1

問題是,許多ISPs將端口25(默認smtp)上的連接阻塞到除自己以外的服務器。與垃圾郵件阻止等有關