# زبان های اسکریپتی > PHP > CodeIgniter >  مشکل با ارسال ایمیل در کدایگنایتر

## pary_daryayi

من از کلاس 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

منظورتون چیه که یاهو نمیرسه جیمیل میرسه ؟ 
یعنی وقتی آدرس ایمیل خودتون رو از سرویس جیمیل میزنید ایمیل میاد اما به ایمیل های یاهو نمیاد ؟ 
اسپم چی ؟ شاید میاد اسپم

----------


## pary_daryayi

بعنوان مثال اگه الان تو* این سایتم*   تو قسمت تماس با من یک ایمیل با ایمیل یاهوی خودتون بهم ایمیل بزنید ، دو تا اتفاق میفته :
1 - ایمیل شما به من نمیرسه 
2 - تو قسمت sent email یا spam شما یک پیغام میاد در مورد *554 email error*

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

----------


## pary_daryayi

من از کلاس 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!";
}
}

----------


## joker

SMTP سرویس یاهو چون رایگان نیست اجازه استفاده عمومی از پورت مربوطه را نمیده

----------


## pary_daryayi

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

----------


## pary_daryayi

البته یکی از دوستان تو این انجمن راهنمایی کردند ، ولی باز هم نشد .

----------


## plague

ایمیل ساده با استفاده از دستور 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

پروتکل مورد استفاده برای ارسال ایمیل رو تغییر بدید و موقتاً از SMTP استفاده نکنید. در کدایگنایتر سه پروتکل برای ارسال ایمیل وجود داره که میتونید اونها رو هم تست کنید.
mailsendmailsmtp



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

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

----------


## somayeh_rtn

ممنونم. مشکل من حل شد.

----------

