添付ファイル付きのメールをGoDaddyサーバー経由で送信しています。メールはGmailアカウントに送信されたときに正常に動作しますが、Outlookではメールテキストはまったく表示されません。添付ファイルはそこにありますが、テキストはありません。添付ファイル付きのPHPメールをGoDaddyサーバーに送信できますか?
私のhostgatorサーバー上で、問題なく動作します。
誰でも正しい方向に向けることができますか?
<?php
function mail_attachment($to, $subject, $message, $from, $file) {
// $file should include path and filename
$filename = basename($file);
$file_size = filesize($file);
$content = chunk_split(base64_encode(file_get_contents($file)));
$uid = md5(uniqid(time()));
$header = "From: ".$from."\r\n"
."MIME-Version: 1.0\r\n"
."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"
."This is a multi-part message in MIME format.\r\n"
."--".$uid."\r\n"
."Content-type:text/plain; charset=iso-8859-1\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n"
.$message."\r\n\r\n"
."--".$uid."\r\n"
."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"
."Content-Transfer-Encoding: base64\r\n"
."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
.$content."\r\n\r\n"
."--".$uid."--";
return mail($to, $subject, "", $header);
}
//Settings
$upload_folder = './data/'; //<-- this folder must be writeable by the script
$your_email = '[email protected], [email protected]';
$errors ='';
if(isset($_POST['submit']))
{
///------------Do Validations-------------
if (isset($_FILES['uploadFile']))
{
}
//send the email
if(empty($errors))
{
//copy the temp. uploaded file to uploads folder
$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
$tmp_path = $_FILES["uploadFile"]["tmp_name"];
if(is_uploaded_file($tmp_path))
{
if(!copy($tmp_path,$path_of_uploaded_file))
{
$errors .= '\n error while copying the uploaded file';
}
}
$user_message = "Contact Information\r\n" .
"=======================================\r\n" .
"Date: " . $_POST['dateMonth'] . "-" . $_POST['dateDay'] . $_POST['dateYear'] . "\r\n";
}
//send the email
$to = $your_email;
$subject= trim("[SERVICE ORDER]");
$from_email = "[email protected]";
if ($name_of_uploaded_file != "")
{
$file = "D:\\xxx\\xxx\\html\\data\\" . $name_of_uploaded_file;
if (mail_attachment($to, $subject, $user_message, $from_email, $file)) {
header("Location: thank-you.html");
} else {
echo("<p>Message delivery failed...</p>");
}
} else {
$headers = 'From: ' . $from_email . "\r\n";
if (mail($to, $subject, $user_message, $headers)) {
header("Location: thank-you.html");
} else {
echo("<p>Message delivery failed...</p>");
}
}
}
}
///////////////////////////Functions/////////////////
// Function to validate against any email injection attempts
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
添付ファイルなしでGoDaddyサーバーで作業するように電子メールを受け取ることができましたか?実際に何が起こっているのかを知るには、変数を削除するか、アクティビティを記録する必要があります。また、GoDaddyには、電子メールが正しく送信されないような制限があるかどうかチェックしましたか?最後に、私は両方のサーバー環境でまったく同じコードであると仮定していますか? – Ryan
godaddyを除くすべてのコードはwindowsで、hostgatorはLinuxです。添付ファイルのないメールは正常に動作し、Gmailのメールはうまく動作します。それは問題を抱えているOutlookへの電子メールだけです。 –
私のやっていることは、GoDaddyのWindowsサーバーで問題が発生している可能性があります。ローカルのSMTPサーバーは、メッセージを中継するために鼻水が流れている可能性があります。私は約5年前に使用した古い古いWindowsサーバーと同様の苦労を経験しており、これが問題でした。私はサイドノートでMarc Bに同意する、私はPHPMailerの問題を自分で持っていない – Ryan