• 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با ارسال ایمیل در کدایگنایتر
#1
من از کلاس email کدایگنایتر برای ارسال ایمیل استفاده میکنم.
مشکلی که وجود داره اینه که ایمیل های yahoo به من نمیرسن اما ایمیل های gmail میرسن . علت چیه ؟
کد پی‌اچ‌پی:
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!'
        
        }
        
    } 
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#2
از smtp استفاده کن و خیال خودت رو راحت کن
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#3
این کانفیگ رو تست کن.

کد پی‌اچ‌پی:
$config['protocol']  = 'smtp';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_port'] = '465';
$config['smtp_timeout'] = '30';
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'password';
$config['charset']  = 'utf-8';
$config['newline']  = "\r\n"
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : pary_daryayi
#4
ببینیدبعنوان مثال اگه الان تو این سایتم تو قسمت تماس با من یک ایمیل با ایمیل یاهوی خودتون بهم ایمیل بزنید ، دو تا اتفاق میفته :
1 - ایمیل شما به من نمیرسه
2 - تو قسمت spam شما یک پیغام میاد در مورد 554 email error

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

کدی که شما نوشتید برای ایمیل فرستنده هست ؟ من با این فرض این کدها رو نوشتم ، اما نمیدونم به جای password فرستنده چی بنویسم . با اینحال کلی هم خطا داد

کد پی‌اچ‌پی:
public function send_email($name,$email,$subject,$message,$address_email){
        
              
$config['protocol']  = 'smtp';
              
$config['smtp_host'] = 'ssl://smtp.mail.yahoo.com';
              
$config['smtp_port'] = '465';
              
$config['smtp_timeout'] = '30';
              
$config['smtp_user'] = $email;
              
$config['smtp_pass'] = 'password';
              
$config['charset']  = 'utf-8';
              
$config['newline']  = "\r";

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

        
$this->email->from($email$name);
        
$this->email->to($address_email);
        
$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!'
        
        } 


نقل قول:A PHP Error was encountered

Severity: Warning

Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.mail.yahoo.com:465 (Connection timed out)

Filename: libraries/Email.php

Line Number: 1689

نقل قول:A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

نقل قول:The following SMTP error was encountered: 110 Connection timed out
Unable to send data: AUTH LOGIN
Failed to send AUTH LOGIN command. Error:
Unable to send data: MAIL FROM:

from:

The following SMTP error was encountered:
Unable to send data: RCPT TO:

to:

The following SMTP error was encountered:
Unable to send data: DATA
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#5
کد پی‌اچ‌پی:
$config['smtp_host'
رو همون جیمیل قرار بده
کد پی‌اچ‌پی:
'smtp_host' => 'ssl://smtp.googlemail.com'

کد پی‌اچ‌پی:
$config['smtp_user'] = $email;
              
$config['smtp_pass'] = 'password'

باید آدرس جیمیل و پسورد اکانت خودت باشه نه کاربر.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : pary_daryayi
#6
منظورتون اینه که اکانت و رمز خود گیرنده رو باید جایگزین کنم درسته ؟ این کار رو انجام دادم ولی باز تست کردم جواب نداد .
----------------
راستی این سایتو دارم برای کسی درست میکنم ، یعنی باید رمز ایمیلشو داشته باشم تا تو کدها جایگزین کنم ؟ بنظرتون مشتری رمز ایمیلشو میده ؟ Blush
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#7
من میخوام از داخل سایتم برای شما یک ایمیل ارسال کنم مثلا.
و کانفیگ رو به صورت زیر تغییر میدم:

کد پی‌اچ‌پی:
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = '123456'

نقل قول:راستی این سایتو دارم برای کسی درست میکنم ، یعنی باید رمز ایمیلشو داشته باشم تا تو کدها جایگزین کنم ؟ بنظرتون مشتری رمز ایمیلشو میده ؟

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

بذار یه حقیقتی رو هم بهت بگم، شخصا به خاطر همین مشکلات کلاس ایمیل CI (عدم ارسال ایمیل، اسپم و...) از کلاس های بهتری مثل swiftmailer استفاده میکنم.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : pary_daryayi
#8
من از کلاس 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   "[email protected]";
        
$mail->Password   "mypass";
        
$mail->SetFrom($email$name);  //Who is sending the email
        
$mail->AddReplyTo($admin_email,'name');  //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!";
        }
    } 
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#9
جستجو کردم ، میگه اینو جایگزین کن
کد پی‌اچ‌پی:
$mail->SMTPSecure "tls";
$mail-> Port 587

ولی باز بی فایده بود .Blush

و برای حالت اول که از کلاس خود کدایگنایتر استفاده میکردم، با توجه به تنظیماتی که شما گفتید ، الان دیگه خطا اتفاق نمیفته اما ایمیلهای یاهو هم نمیرسه و همچنان gmail ها میرسن !!!BlushBlush
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#10
روی هاست اون شخصی که داری کار میکنی یه ایمیل noreply بساز و...

کد پی‌اچ‌پی:
$mail = new PHPMailer;
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->CharSet 'UTF-8';
$mail->Host 'ehsanrezaee.ir';                   // Specify main and backup server
$mail->SMTPAuth true;                               // Enable SMTP authentication
$mail->Username '[email protected]';          // SMTP username
$mail->Password 'XXXXXXXXX';                         // SMTP password
$mail->From '[email protected]';
$mail->FromName 'ehsan rezaee';
$mail->addCC('[email protected]');

$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject 'title';
$mail->Body    'body';
$mail->AltBody '';

$mail->Send() 
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : pary_daryayi


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان