ورود

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



pary_daryayi
سه شنبه 18 شهریور 1393, 15:06 عصر
من از کلاس 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!';
}
}}

godofphp
سه شنبه 18 شهریور 1393, 15:22 عصر
منظورتون چیه که یاهو نمیرسه جیمیل میرسه ؟
یعنی وقتی آدرس ایمیل خودتون رو از سرویس جیمیل میزنید ایمیل میاد اما به ایمیل های یاهو نمیاد ؟
اسپم چی ؟ شاید میاد اسپم

pary_daryayi
سه شنبه 18 شهریور 1393, 19:25 عصر
بعنوان مثال اگه الان تو این سایتم (http://web-site-man.ir/) تو قسمت تماس با من یک ایمیل با ایمیل یاهوی خودتون بهم ایمیل بزنید ، دو تا اتفاق میفته :
1 - ایمیل شما به من نمیرسه
2 - تو قسمت sent email یا spam شما یک پیغام میاد در مورد 554 email error

ولی اگه با ایمیلی غیر از یاهو به من ایمیل بزنید این اتفاق نمیفته

pary_daryayi
سه شنبه 25 شهریور 1393, 08:12 صبح
من از کلاس phpmailer با توجه به
این لینک (http://phpsblog.agustinvillalba.com/phpmailer-codeigniter/)
استفاده کردم .
خطایی که اتفاق می افته اینه :
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!";
}
}

joker
پنج شنبه 10 مهر 1393, 15:41 عصر
SMTP سرویس یاهو چون رایگان نیست اجازه استفاده عمومی از پورت مربوطه را نمیده

pary_daryayi
پنج شنبه 10 مهر 1393, 16:47 عصر
راه حل چیه ؟
فقط در مورد ارسال کننده این اتفاق میفته ،
من الان مجبور شدم صورت مسئله رو پاک کنم ،
تمام پیامها رو تو بانک ذخیره کردم و به مدیر نشون میدم ،
یعنی مدیر از طریق مدیریت پیامها رو میخونه و بهشون پاسخ میده . چون ایمیل مدیر gmail هست ، حداقل ایمیلش به کاربران میرسه .
ولی میخوام این مشکل حل بشه .

pary_daryayi
پنج شنبه 10 مهر 1393, 16:50 عصر
البته یکی از دوستان تو این انجمن (http://forum.iranphp.org/Thread-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%AF%D8%B1-%DA%A9%D8%AF%D8%A7%DB%8C%DA%AF%D9%86%D8%A7%DB%8C%D 8%AA%D8%B1) راهنمایی کردند ، ولی باز هم نشد .

plague
پنج شنبه 10 مهر 1393, 23:38 عصر
ایمیل ساده با استفاده از دستور 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();

Morteza
دوشنبه 31 فروردین 1394, 04:51 صبح
پروتکل مورد استفاده برای ارسال ایمیل رو تغییر بدید و موقتاً از SMTP استفاده نکنید. در کدایگنایتر سه پروتکل برای ارسال ایمیل وجود داره که میتونید اونها رو هم تست کنید.

mail
sendmail
smtp






$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'UTF-8';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

somayeh_rtn
جمعه 14 شهریور 1399, 10:43 صبح
ممنونم. مشکل من حل شد.