PDA

View Full Version : مشکل در ارسال نشدن ایمیل



krasus
شنبه 07 فروردین 1395, 20:32 عصر
سلام
من با استفاده از PHPMailer ایمیلم رو از هاست خودم به مثلا یاهو ارسال می کنم اما مشکل اینجاست که وقتی متن ترکیبی از کاراکتر های انگلیسی و فارسی هست ایمیل ارسال نمیشه ولی وقتی فقط از کاراکتر های فارسی استفاده می کنم ایمیل یه درستی ارسال میشه !!!
مشکلش کجاست؟






<?PHP




$userMail = 'emailam@yahoo.com';
// $userMail = 'emailam@gmail.com';


$msgHtml = '
<html>
<head>
<meta charset="UTF-8">
</head>
<body>


<p style="direction: rtl;">نام کاربری و کلمه عبور شما جهت ورود به سامانه</p>
<p style="direction: rtl;">نام کاربری : </p>
<p>abcd</p>
<p style="direction: rtl;">کلمه عبور : </p>
<p>efgh</p>


</body>
</html>';


/*
این درست ارسال میشه

$msgHtml = '
<html>
<head>
<meta charset="UTF-8">
</head>
<body>


<p style="direction: rtl;">نام کاربری و کلمه عبور شما جهت ورود به سامانه</p>
<p style="direction: rtl;">نام کاربری : </p>
<p style="direction: rtl;">کلمه عبور : </p>


</body>
</html>';
*/


require_once('PHPMailer/class.phpmailer.php');


echo sendMailFromMatianMail($userMail, $msgHtml);


function sendMailFromMatianMail($userMail, $msgHtml)
{
$mail = new PHPMailer(true);
$mail->IsSMTP();
//http://www.matiaan.com/roundcube/
try {
$mail->Host = 'mail.domain.com'; // آدرس SMTP سرور شما
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
// $mail->SMTPSecure = 'ssl';
// $mail->Port = 465;
// $mail->SMTPDebug = 1;
$mail->Username = 'info@domain.com'; // نام کاربری SMTP
$mail->Password = 'password'; // کلمه عبور SMTP
$mail->AddReplyTo('info@domain.com', 'info@domain.com'); // افزودن پاسخ به ارسال کننده
$mail->AddAddress($userMail, $userMail); // تنظیم آدرس گیرنده ایمیل
// تنظیم قسمت ارسال کننده ایمیل
$mail->SetFrom('info@domain.com', 'پشتیبانی متیان');
$mail->Subject = 'بازیابی اطلاعات ورود به سامانه متیان';
//متنی برای کاربرانی که نمی توانند ایمیل را به درستی مشاهده کنند
$mail->AltBody = 'برنامه شما از این ایمیل پشتیبانی نمی کند، برای دیدن آن، لطفا از برنامه دیگری استفاده نمائید';
$mail->CharSet = 'UTF-8'; // یونیکد برای زبان فارسی
// $mail->ContentType = 'text/html'; // استفاده از html
$mail->ContentType = 'text/plain'; // استفاده از html
$mail->MsgHTML($msgHtml);
$mail->Send(); // ارسال
return 'پیام با موفقیت ارسال شد';
}
catch (phpmailerException $e) {
return $e->errorMessage(); // پیام خطا از phpmailer
}
catch (Exception $e) {
return $e->getMessage(); // سایر خطاها
}
}


?>

Unique
یک شنبه 08 فروردین 1395, 10:02 صبح
چرا با SMTP میفرستی ! هاستت اگه لینوکسی بگذار با همون MTA خودش بفرسته.
اگه ایمیل را برای Gmail یا سایت خودت ارسال کنی میره یا اونم به مشکل میخوره ؟

krasus
چهارشنبه 11 فروردین 1395, 21:01 عصر
سلام
وقتی با mta ارسال کردم ایمیلم رفت توی spam برای همین ولش کردم رفتم سراغ smtp بعد دیدم امکاناتش هم زیاده دیگه با همین کار کردم.


{
اگه ایمیل را برای Gmail یا سایت خودت ارسال کنی میره یا اونم به مشکل میخوره ؟
} :
ایمیل رو هم برای یاهو و هم gmail ارسال کردم و فرقی نداشت در هر صورت اگه ترکیبی از کاراکتر های انگلیسی و فارسی توی متن صفحه وجود داشته باشه دیگه ارسال نمیشه و برای ایمیلی که توی هاست خودم هست یه پیام میاد که متنش اینه








This message was created automatically by mail delivery software.




A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:




emailam@yahoo.com
Rejected because of excessive spam score : , mid:
1ajwX7-0002XS-UK ,









اما تا حالا ایمیل رو برای خودم ارسال نکر

Unique
پنج شنبه 12 فروردین 1395, 10:13 صبح
وقتی با mta ارسال کردم ایمیلم رفت توی spam برای همین ولش کردم رفتم سراغ smtp بعد دیدم امکاناتش هم زیاده دیگه با همین کار کردم.
فکر نمیکنم ربطی به MTA داشته باشه. شما SPF و DKIM رت توی Cpanel در قسمت Mail -> Email Authentication فعال کن و سعی کن ایمیلت شامل مطالبی که کاندید SPAM هست نشه ، ایمیل های تبلیغاتی و یکسری محتوا های خاص عموما فیلتر میشن. بعدشم حتما چک کن Blacklist نشده باشه دامنه شما. یه مدت ارسال ایمیل داشته باشی باید حل بشه.


ایمیل رو هم برای یاهو و هم gmail ارسال کردم و فرقی نداشت در هر صورت اگه ترکیبی از کاراکتر های انگلیسی و فارسی توی متن صفحه وجود داشته باشه دیگه ارسال نمیشه و برای ایمیلی که توی هاست خودم هست یه پیام میاد که متنش اینه

میگه emailam@yahoo.com را reject کرده به خاطر SPAM Score ی که یک برنامه ناظر اسپم گزارش کرده. ایمیل را که به صورت لینک نمیزنی ؟! توی جواب ایمیل اینطوری توی تگ A نوشته ؟

krasus
سه شنبه 17 فروردین 1395, 17:16 عصر
میگه emailam@yahoo.com را reject کرده به خاطر SPAM Score ی که یک برنامه ناظر اسپم گزارش کرده. ایمیل را که به صورت لینک نمیزنی ؟! توی جواب ایمیل اینطوری توی تگ A نوشته ؟ایمیل رو به صورت لینک نمی زنم و توی گزارش این تگ لینک وجود نداره ، هر کاری کردم که emailam@yahoo.com رو توی تگ لینک قرار نده نشد.متنی که به درستی ارسال میشه رو توی کامنت قرار دادم و متنی که درست ارسال نمیشه رو چند خط بالاتر بدون کامنت کردن نشون دادم. تنها تفاوتشون توی دو خط هست که داخل تگ p نوشتم abcd یا efgh یعنی نه لینکی داره نه موردی داره که برای spam شدن کاندید بشه.یعنی اگه من این مقدار $msgHtml اولی رو کامنت کنم و مقدار $msgHtml دومی که توی کامنت هست رو از حالت کامنتی در بیارم و فایل php رو اجرا کنم ایمیل درست ارسال میشه و اسپم هم نمیشه ولی اگه با مقدار $msgHtml اولی برنامه رو اجرا کنم کلا ارسال نمیشه یعنی حتی spam هم نمیشه!!؟!؟!و نکته دیگه اینکه من با directadmin کار می کنم نه با cpanel ، گفتم شاید نکته ای توی این موضوع باشه و بین cpanel و directadmin تفاوتی وجود داشته باشه که البته بعید می دونم.

krasus
سه شنبه 17 فروردین 1395, 18:18 عصر
مشکلم حل شد اما روش حلم همچین اصولی نبود
وقتی کد


$mail->AltBody = 'برنامه شما از این ایمیل پشتیبانی نمی کند، برای دیدن آن، لطفا از برنامه دیگری استفاده نمائید';



رو کامنت کردم مشکل حل شد ولی نمی دونم چه ربطی به این داشت.