2015-11-06 194 views
-2

我做了一個HTML表單,我從中提交數據到一個PHP文件進行驗證,並在成功驗證後,PHP將數據處理成一個XML文件。 現在我想發送這些數據到一個email.Is有任何方法做到這一點。不要告訴我通過PHP直接郵寄,因爲我已經嘗試所有/不使用SMTP(沒有成功)。我的網站是在Azure上部署了一些SMTP問題。我嘗試訂閱那裏的Sendgrid服務,但它顯示了一些賬單錯誤。那麼有沒有辦法通過XML發送郵件?發送XML數據到電子郵件

+0

發送(荷蘭國際集團)通過XML郵件使得完全沒有意義的。感謝垃圾郵件發送者(誰會濫用你想使用的任何渠道),發送電子郵件通常比應該更難,但對於能夠幫助的人,你需要提供更多關於你遇到什麼錯誤的更多解釋等。 – Foon

+0

@Foon有可能嗎? – talentedandrew

+0

您是否認爲CSI的科技作家? (https://www.youtube.com/watch?v=hkDD03yeLnU)XML是一種標記語言;這對發送電子郵件來說是完全正交的。所以,不,你不能通過XML發送郵件。 – Foon

回答

0

您可以在Azure marketplace中設置sendgrid帳戶,因爲Azure客戶每個月可以解鎖25,000封免費電子郵件,所以我認爲我的帳單結算問題會更少。要在Azure中設置sendgrid帳戶,可以參考How to Use the SendGrid Email Service from PHP,或者也可以通過單擊「新建」按鈕找到該服務器,然後在Azure preview manage portal的搜索欄中搜索「SendGrid」。

下面是一個簡單的代碼示例利用Web API發送與XML數據的電子郵件,PHP版本應該比5.5是大寫:

$myXMLData = 
"<?xml version='1.0' encoding='UTF-8'?> 
<root> 
<to>[email protected]</to> 
<from>[email protected]</from> 
<subject>Reminder</subject> 
<html>Don't forget me this weekend!</html> 
<text>text content</text> 
</root>"; 

$xml = simplexml_load_string($myXMLData) or die("Error: Cannot create object"); 
print_r($xml); 

$url = 'https://api.sendgrid.com/'; 
$user = 'username'; 
$pass = 'password'; 

$params = array(
       'api_user' => $user, 
       'api_key' => $pass, 
       'to' => $xml->{'to'}, 
       'subject' => $xml->{'subject'}, 
       'html' => $xml->{'html'}, 
       'text' => $xml->{'text'}, 
       'from' => $xml->{'from'}, 
); 

$request = $url . 'api/mail.send.json'; 

// Generate curl request 
$session = curl_init($request); 

// Tell curl to use HTTP POST 
curl_setopt($session, CURLOPT_POST, true); 
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false); 
// Tell curl that this is the body of the POST 
curl_setopt($session, CURLOPT_POSTFIELDS, $params); 

// Tell curl not to return headers, but do return the response 
curl_setopt($session, CURLOPT_HEADER, false); 
curl_setopt($session, CURLOPT_SSLVERSION, 6); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
// obtain response 
$response = curl_exec($session); 
curl_close($session); 

// print everything out 
echo ($response); 
+0

你能告訴我爲什麼只有在Azure託管網站上發送電子郵件才能使用只有Sendgrid? – talentedandrew

+0

是的,您可以直接使用您的sendgrid帳戶和電子郵件信息修改此代碼段,並且它可以在Azure網站上運行。 –