2016-09-27 6 views
-2

mail機能を持つ電子メールにOutlook予定表ファイル(.ics)を添付する必要があります。電子メールに.icsを添付するには?

これは私の今のところですが、動作しません。

<?php 

$firstname = $_POST["firstname"]; 
$lastname = $_POST["lastname"]; 
$email = $_POST["email"]; 
$companyname = $_POST["company"]; 

$file = "webinar-041016.ics"; 
$content = file_get_contents($file); 
$content = chunk_split(base64_encode($content)); 

$EmailTo = "[email protected]"; 
$Subject = "New Webinar Registration"; 

// prepare email body text 
$Body .= "Firstname: "; 
$Body .= $firstname; 
$Body .= "\n"; 

$Body .= "Lastname: "; 
$Body .= $lastname; 
$Body .= "\n"; 

$Body .= "Email: "; 
$Body .= $email; 
$Body .= "\n"; 

$Body .= "Company Name: "; 
$Body .= $companyname; 
$Body .= "\n"; 

$headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

$conf_subject = "Registration Complete ..."; 

$conf_body = "Dear " . $firstname . ",\n\nThank you..." ; 
$conf_body .= "Content-Type: text/calendar; name=\"".$file."\"\r\n" ; 
$conf_body .= "Content-Transfer-Encoding: quoted-printable\r\n"; 
$conf_body .= "Content-Disposition: attachment; filename=\"".$file."\"\r\n\r\n"; 
$conf_body.= $content."\r\n\r\n"; 

$conf_headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

// send email 
$success = mail($EmailTo, $Subject, $Body, $headers); 
$conf_mail = mail($email, $conf_subject, $conf_body, $conf_headers); 
// redirect to success page 
if ($success){ 
    echo "success"; 
}else{ 
    echo "invalid"; 
} 
//Attached is an Outlook calendar invite so that you can plan your day accordingly.\n\n 
?> 

ここで何をすればよいですか?私のエンコーディングは間違っている?

+0

あなたのスクリプトはインジェクション攻撃に公開されています。あなたのMIME構造は存在しません。無効なエンコードの機会がたくさんあります。 PHPMailer(https://github.com/PHPMailer/PHPMailer)を使用すると、あなたの質問にタグを付けたように簡単に見つけることができます。現在のバージョンでは、ICSビルダークラスもバンドルされています。 – Synchro

+0

メールオプションで解決策が必要です。 – stormec56

+0

なぜですか? PHPMailerはデフォルトで 'mail()'を使いますが、あなたの問題は 'mail'を呼び出すことではなく、それを渡すための有効なメッセージを構築することにあります。 – Synchro

答えて

0

あなたはすでにこの見ているかもしれません:

:あなたがしたいあなたは、コードの一行に、しなければならない作業を絞り込む PHPMailerに顔をしているかもしれない提案として

PHP Sending Mail

$mail->addAttachment('/var/tmp/file.tar.gz'); 
+0

カレンダーのメールは通常の添付ファイルとよく似ていません.3方向のマルチパート/代替構造です。幸いにもPHPMailerはそれをサポートしています.Icalプロパティを見てください。 – Synchro

+0

でもファイルとして送信することはできますが、マルチパート/代替構造として解釈する必要はありません。 –

+0

公式には一般的にはそうですが、実際にはもっと複雑です。 [このバグ](https://github.com/PHPMailer/PHPMailer/issues/175)と[this one](https://bugzilla.mozilla.org/show_bug.cgi?id=505024)を参照してください。 – Synchro

関連する問題