2011-12-15 15 views
16

के साथ कोडिग्निटर एसएमटीपी ईमेल मुझे लगता है कि कल अमेज़ॅन ने एसईएस (सरल ईमेल सेवा) के लिए एसएमटीपी समर्थन की घोषणा की।अमेज़ॅन एसईएस

मैंने कोडिनेटर के साथ एसएमटीपी ईमेल भेजने की कोशिश की कि कोई भाग्य नहीं है।

मैं एक सत्यापित प्रेषक और सब कुछ अच्छा लग रहा है:

  • email-smtp.us-east-1.amazonaws.com
  • टीएलएस:

    $this->load->library('email'); 
    
    $config = array(
        'protocol' => 'smtp', 
        'smtp_host' => 'email-smtp.us-east-1.amazonaws.com', 
        'smtp_user' => 'SMTP USERNAME', 
        'smtp_pass' => 'SMTP PASSWORD', 
        'smtp_port' => 465, 
        'mailtype' => 'html' 
    ); 
    
    $this->email->initialize($config); 
    $this->email->print_debugger(); 
    
    $this->email->from('[email protected]', 'Test From'); 
    $this->email->to('[email protected]', 'Test To'); 
    $this->email->subject('Test'); 
    $this->email->message('test'); 
    
    $this->email->send(); 
    

    मैं folowing smtp_host की कोशिश की : //email-smtp.us-east-1.amazonaws.com

  • ssl: //email-smtp.us-east-1.amazonaws.com
,210

जब मैं print_debugger गूंज() मैं मिलता है:

220 email-smtp.amazonaws.com ESMTP SimpleEmailService-194655181 
hello: 421 Timeout waiting for data from client. 

इन परीक्षणों का उपयोग MediaTemple (जी एस) सर्वर पर चलाते हैं।

+0

यह भी अन्य की CodeIgniter "बहन-व्यवस्थाएं" के साथ मामला है - उदाहरण के लिए FuelPHP। – antitoxic

उत्तर

24

मुझे लगता है कि समय समाप्ति संदेश मिला जब तक मैं लाइन कहा: -

$this->email->set_newline("\r\n"); 

मैं अपने मेजबान के रूप में ssl://email-smtp.us-east-1.amazonaws.com

+0

हाय @ स्टीफन, मैंने इन पंक्तियों को मेरे कोड में जोड़ा, लेकिन जब भी मैं अपने जीमेल 'त्रुटि में भेजता हूं तब भी मुझे एक त्रुटि मिल रही है: ईमेल पता सत्यापित नहीं है। यह केवल तब काम करता है जब मैं उसी डोमेन को भेजता हूं जिससे मैंने संदेश भेजा था। क्या आप मुझे बता सकते हैं कि प्रत्येक मामले में आपका 'से' और 'से' ईमेल पते क्या हैं? धन्यवाद! –

+0

@ स्टीफन, आपको यह कहां मिला? इससे मुझे यहां फ्यूलपैप ढांचे के साथ बचाया गया। – antitoxic

+3

दुर्भाग्यवश यह स्पष्ट आदेश आवश्यक है: 'config config ['newline'] = '\ r \ n' के माध्यम से इसे सेट करना;' config/email.php' में काम नहीं किया। – pr1001

4
public function enviar_email($para, $assunto, $mensagem, $formato='html'){ 
      $this->CI->load->library('email'); 
      $config['mailtype']  = $formato; 
      $config['useragent'] = 'Post Title'; 
      $config['protocol']  = 'smtp'; 
      $config['smtp_host'] = 'tls://email-smtp.us-east-1.amazonaws.com'; 
      $config['smtp_user'] = 'smtpuser'; 
      $config['smtp_pass'] = 'smtppass'; 
      $config['smtp_port'] = '465'; 
      $config['wordwrap']  = TRUE; 
      $config['newline']  = "\r\n"; 

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

      $this->CI->email->from('Your Verified Sender Email', 'Post Title'); 
      $this->CI->email->to($para); 
      $this->CI->email->subject($assunto); 
      $this->CI->email->message($mensagem); 


      if($this->CI->email->send()): 
        return TRUE; 
      else: 
        $this->CI->email->print_debugger(); 
      endif; 

    } 
+1

क्या आप अपने उत्तर में कुछ संदर्भ जोड़ सकते हैं। समझाओ कि ओपी द्वारा प्रदान किया गया कोड गलत हो गया और यह क्यों काम करता है। – ChiefTwoPencils

2

सेटअप है कि मेरे लिए काम किया निर्धारित किया है इस तरह दिखता है:

$test_config['protocol'] = 'smtp'; 
$test_config['smtp_host'] = 'ssl://email-smtp.us-east-1.amazonaws.com'; 
$test_config['smtp_port'] = '465'; 
$test_config['smtp_user'] = 'XXXXXXXXXXXXXXXXXXX'; 
$test_config['smtp_pass'] = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'; 
$test_config['newline']  = "\r\n"; 

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

$this->email->from('[email protected]', 'From at Test.com'); 
$this->email->to('[email protected]'); 

$this->email->subject('Email Test'); 
$this->email->message('Testing the email class.'); 

$this->email->send(); 

न्यूलाइन वर्ण "\ r \ n" पर सेट होना चाहिए, और कॉन्फ़िगर फ़ाइल में सेट शर्त लगा सकते हैं, अगर प्रोपे जैसा ऊपर बताया गया है "\ r \ n", '\ r \ n' के रूप में सेट करें।

3

मैं अपने config सरणी के लिए लाइन

$config['smtp_crypto'] = 'tls'; 

जोड़ने की जरूरत

इस supported by CI 2.1.0 and greater

+0

यह मेरे लिए तय है। मुझे लगता है कि अमेज़ॅन एसईएस को अब इसकी आवश्यकता है। धन्यवाद। – AdmiralAdama

1

है आप 3 बातों के साथ अमेज़न सरल ईमेल सेवा काम करने के लिए सीआई (प्राप्त करने के लिए क्या करने की जरूरत एसईएस)

  1. newline = \r\n सेट करने की आवश्यकता है या आपको टाइमआउट मिलेगा।
  2. कुछ को smtp_crypto सेट करने की आवश्यकता है। (नई आवश्यकता)
  3. यह सुनिश्चित करने की आवश्यकता है कि "से" ईमेल पता अमेज़ॅन एसईएस में अनुमोदित है। मैं अपना ईमेल पता "[email protected]"

इसके अतिरिक्त "से" बनाया है, आप से स्पैम फ़ोल्डर में डाल दिया हो रही ईमेल रोकने के लिए अपने "से" ईमेल पते के लिए DKIM की स्थापना करनी चाहिए। इसमें अमेज़ॅन एसईएस -> पहचान प्रबंधन -> ईमेल पते -> डीकेआईएम, सक्षम बटन पर क्लिक करना और आपकी वेबसाइट के DNS में 3 DNS प्रविष्टियां जोड़ना शामिल है।

एसपीएफ़ स्थापित करने के लिए कुछ भी विशेष करने की आवश्यकता नहीं है। लिफाफा डोमेन amazonses.com एसपीएफ़ पास करता है।

अंत में, "उत्तर दें" का उपयोग करना सुनिश्चित करें यदि आप चाहते हैं कि उपयोगकर्ता आपके अनुमोदित "से" ई-मेल पते से अलग ई-मेल पते का उत्तर दे सकें।

उदाहरण काम कर कोड:

$obj = &get_instance(); 

$config['protocol'] = 'smtp'; 
$config['smtp_host'] = 'email-smtp.us-west-2.amazonaws.com'; 
$config['smtp_user'] = 'USER'; 
$config['smtp_pass'] = 'PASS'; 
$config['smtp_port'] = '587'; 
$config['newline'] = "\r\n"; 
$config['smtp_crypto'] = 'tls'; 
$obj->email->initialize($config); 

$obj->email->set_mailtype('html'); 
// don't html_escape email header variables 
$obj->email->from(MV_FROM_EMAIL, $from_name); 
$obj->email->reply_to($from_email, $from_name); 
$obj->email->to($to); 
$obj->email->subject($subject); 
$obj->email->message($obj->load->view($path, html_escape($data), true)); 
$obj->email->send(); 
+0

एक आकर्षण की तरह काम किया - धन्यवाद! –

संबंधित मुद्दे