مشکل با ارسال ایمیل در کدایگنایتر
من از کلاس email کدایگنایتر برای ارسال ایمیل استفاده میکنم.
مشکلی که وجود داره اینه که ایمیل های yahoo به من نمیرسن اما ایمیل های gmail میرسن . علت چیه ؟
class sendemail_model extends CI_Model{
public function send_email($address_email){
$name = $this->input->post('name',TRUE);
$email = $this->input->post('email',TRUE);
$subject = $this->input->post('subject',TRUE);
$message = $this->input->post('message',TRUE);
$to = $address_email;
$this->email->initialize(array('mailtype' => 'html'));
$this->email->from($email, $name);
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message);
if (!$this->email->send()){
$error =show_error($this->email->print_debugger());
return $error;
}
else
return 'Your e-mail has been sent!';
}
}}
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
منظورتون چیه که یاهو نمیرسه جیمیل میرسه ؟
یعنی وقتی آدرس ایمیل خودتون رو از سرویس جیمیل میزنید ایمیل میاد اما به ایمیل های یاهو نمیاد ؟
اسپم چی ؟ شاید میاد اسپم
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
بعنوان مثال اگه الان تو این سایتم تو قسمت تماس با من یک ایمیل با ایمیل یاهوی خودتون بهم ایمیل بزنید ، دو تا اتفاق میفته :
1 - ایمیل شما به من نمیرسه
2 - تو قسمت sent email یا spam شما یک پیغام میاد در مورد 554 email error
ولی اگه با ایمیلی غیر از یاهو به من ایمیل بزنید این اتفاق نمیفته
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
من از کلاس phpmailer با توجه به
این لینک استفاده کردم .
خطایی که اتفاق می افته اینه :
SMPT CONNECT field
باید چه تغییری در این کد اعمال کنم ؟
public function sendEmail(){
// get admin email
$ressetting=$this->setting_model->get();
foreach ($ressetting as $rowsetting){
$admin_email = $rowsetting->admin_email;
}
$name = $this->input->post('name',TRUE);
$email = $this->input->post('email',TRUE);
$subject = $this->input->post('subject',TRUE);
$message = $this->input->post('message',TRUE);
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "myemail@gmail.com";
$mail->Password = "mypass";
$mail->SetFrom($email, $name); //Who is sending the email
$mail->AddReplyTo($admin_email,'hassan.sotudeh'); //email address that receives the response
$mail->Subject = $subject;
$mail->Body = "HTML message";
$mail->AltBody = $message;
$destino = $admin_email; // Who is addressed the email to
$mail->AddAddress($email, $name);
if(!$mail->Send()) {
echo "Error: " . $mail->ErrorInfo;
echo '<br/>';
echo $admin_email;
} else {
echo "Message sent correctly!";
}
}
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
SMTP سرویس یاهو چون رایگان نیست اجازه استفاده عمومی از پورت مربوطه را نمیده
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
راه حل چیه ؟
فقط در مورد ارسال کننده این اتفاق میفته ،
من الان مجبور شدم صورت مسئله رو پاک کنم ،
تمام پیامها رو تو بانک ذخیره کردم و به مدیر نشون میدم ،
یعنی مدیر از طریق مدیریت پیامها رو میخونه و بهشون پاسخ میده . چون ایمیل مدیر gmail هست ، حداقل ایمیلش به کاربران میرسه .
ولی میخوام این مشکل حل بشه .
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
البته یکی از دوستان تو این انجمن راهنمایی کردند ، ولی باز هم نشد .
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
ایمیل ساده با استفاده از دستور mail میفرستی چی ؟ این اررور 554 خیلی کلی هستش و نمیشه دقیقا گفت چشه ولی معمولا به این معنی که سرور دریافت کننده از یه قسمت ایمیل شما خوشش نمیاد ! و بلاک میکنه
وقتی اینی مشکل برا من پیش میاد چند مدل مختلف کد رو تست میکنم و به صورت دستی پارمتر ها رو وارد میکنمی (بدون ارسال از طریق فرم و خوندن تنظیمات از دیتابیس ) تا یکیشون جواب بده
بعد شروع میکنم جایگزین کردن
از این شروع کن
$this->load->library('email');
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
echo $this->email->print_debugger();
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر
پروتکل مورد استفاده برای ارسال ایمیل رو تغییر بدید و موقتاً از SMTP استفاده نکنید. در کدایگنایتر سه پروتکل برای ارسال ایمیل وجود داره که میتونید اونها رو هم تست کنید.
- mail
- sendmail
- smtp
$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'UTF-8';
$config['wordwrap'] = TRUE;
$this->email->initialize($config);
نقل قول: مشکل با ارسال ایمیل در کدایگنایتر