2013-07-19 76 views
0

只需看看使用Swift Mailer從Windows服務器發送電子郵件。我有一個簡單的輸入框,允許網絡用戶添加他們的電子郵件地址(編號爲email),我需要能夠將email PHP變量注入到setTo SwiftMailer代碼中,以允許郵件發送到指定的電子郵件地址...任何人都知道如何做到這一點?swift梅勒 - 設置爲與PHP變量

Basic代碼是

// Set the To addresses with an associative array 
->setTo(array('[email protected]', '[email protected]' => 'A name')) 

我需要得到它使用$email而非[email protected]

任何想法?

+0

要非常小心,如果你被允許客戶端注入其中,電子郵件是越來越交付。垃圾郵件發送者可能會將您的服務器列入黑名單。 –

回答

0

你的意思是你得從一個POSTGET在現場「電子郵件」輸出用戶輸入的電子郵件地址(例如:name="email")?試試這個:

$mailer->setTo($_POST['email']); 

有趣的部分是,你可以用name="email[]",在那裏你可以簡單地說,再次,沿着$_POST['email']setTo通過使用它,你就大功告成了! :)

$mailer->setTo(array(
    '[email protected]' => 'Name 1', 
    '[email protected]' => 'Name 2', 
    '[email protected]' => 'Name 3', 
    '[email protected]' => 'Name 4', 
)); 

您還可以使用更多的例子,像name="name[]"像這樣結合name="email[]"

$mailer->setTo(array_combine($_POST['email'], $_POST['name'])); 

注意,對於array_combine工作,你需要長度的兩個相同的陣列。像這樣保護您的代碼(可擴展以滿足您的需求):

$emails =& $_POST['emails']; 
$names =& $_POST['name']; 

if (count($emails) > count($names)) { 
    $emails = array_slice($emails, 0, count($names)); 
} 

else if (count($names) > count($emails)) { 
    $names = array_slice($names, 0, count($emails)); 
} 

$mailer->setTo(array_combine($emails, $names)); 

祝您好運!

-1

謝謝你們 - 此方法處理:

->setTo($email)