2012-02-07 12 views
7

मैं अमेज़ॅन के ec2 पर एक साइट होस्ट कर रहा हूं जो सेंटोस के 64-बिट संस्करण चला रहा है।क्या मैं अमेज़ॅन के एसईएस का उपयोग सिम्फनी 2 और स्विफ्टमेलर बंडल के साथ कर सकता हूं?

साइट पर एक साधारण हमसे संपर्क करें फ़ॉर्म जो सबमिट किए जाने पर कई पते पर एक ईमेल भेजने की आवश्यकता है (सुंदर मूल)।

क्या किसी ने अमेज़ॅन के एसईएस का उपयोग सिम्फनी 2 और स्विफ्टमेलर बंडल के साथ किया है? और यदि हां, तो क्या आप इस प्रकार के कार्य के लिए एसईएस या अधिक पारंपरिक ईमेल सर्वर का उपयोग करने की सलाह देते हैं?

+0

के रूप में अब आवश्यक है कि आप बाउंस और शिकायतों का प्रबंधन, आप ca ऐसा करने के लिए एडब्ल्यूएस एसईएस मॉनीटर बंडल का उपयोग करें। यह बाउंस, शिकायतों और डिलीवरी के बारे में एडब्ल्यूएस एसएनएस के माध्यम से अधिसूचनाएं प्राप्त करने के लिए विषयों के निर्माण को स्वचालित करने के लिए कुछ उपयोगी आदेश भी प्रदान करता है। बंडल github.com/Aerendir/aws-ses-monitor- बंडल है। उम्मीद है कि यह मदद करेगा। – Aerendir

उत्तर

1

यदि आप मुफ्त स्तरीय सीमा (2 के दैनिक संदेश) के साथ रह सकते हैं, तो मैं निश्चित रूप से आपको पारंपरिक ईमेल सर्वर की बजाय एसईएस के साथ चिपकने की सलाह दूंगा। अधिकांश प्लेटफार्मों के साथ एकीकृत करना आसान है, और आप अपने ईमेल सर्वर के लिए रखरखाव और संचालन लागत को समाप्त करते हैं (हालांकि छोटे, वे अभी भी वहां हैं)। बेशक, एसईएस का उपयोग करते समय डेटा ट्रांसफर लागत अभी भी है, क्योंकि आप Amazon SES pricing पर देख सकते हैं, लेकिन यह आपकी आवश्यकताओं के अनुरूप भी हो सकता है।

1

दिसम्बर 2011 से आप स्विटफ़मेल के साथ smtp का उपयोग कर सकते हैं लेकिन इससे पहले समस्या यह थी कि इस बंडल में अभी भी ईसी 2 पर काम करने के लिए कार्यान्वयन नहीं है, लेकिन पहले से मौजूद है। आप कुछ ढांचे के साथ ईमेल भेजने switfmail की तरह आप अपना पासवर्ड और चाबी होनी चाहिए, और कुछ इस तरह करते हैं पसंद है:

require_once 'lib/swift_required.php'; 

    //Create the Transport 
    $transport = new Swift_AWSTransport(
    'AWS_ACCESS_KEY', 
    'AWS_SECRET_KEY' 
); 

    //Create the Mailer using your created Transport 
    $mailer = Swift_Mailer::newInstance($transport); 

    //Create the message 
    $message = Swift_Message::newInstance() 
    ->setSubject("What up?") 
    ->setFrom(array('[email protected]')) 
    ->setTo(array('t[email protected]')) 
    ->setBody(" 

एडब्ल्यूएस प्रबंधन कंसोल के अंदर अपनी चाबी जाने लेने के लिए ">" एसएमटीपी सेटिंग्स ">" बनाने मेरी एसएमटीपी साख "

और इस एक्सटेंशन को इंस्टॉल की जरूरत करने जा रहे हैं:।

https://github.com/jmhobbs/Swiftmailer-Transport--AWS-SES

लेकिन मैं repet यह केवल जानकारी है अब, आप अपने एडब्ल्यूएस प्रबंधन में पहले अपने ईमेल खाते का सत्यापन करना चाहिए कंसोल और बाद में काम करना चाहिए।

11

स्विफ्टमेलर लाइब्रेरी के साथ भेजे गए देशी एसएमटीपी परिवहन के साथ एसईएस के माध्यम से ईमेल भेजना संभव है। संस्करण 4.2.2 का उपयोग करके नीचे दिए गए उदाहरणों का परीक्षण किया गया था।

अमेज़ॅन एसईएस requires usage of TLS encryption

Swift_SmtpTransport परिवहन वर्ग तीसरे निर्माता तर्क के रूप में टीएलएस पास करके TLS एन्क्रिप्शन का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है:

require_once './vendor/swiftmailer/swiftmailer/lib/swift_required.php'; 

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance(
     'email-smtp.us-east-1.amazonaws.com', 
     25, 
     'tls' 
    ) 
    ->setUsername('AWS_ACCESS_KEY') 
    ->setPassword('AWS_SECRET_KEY') 
; 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]')) 
    ->setTo(array('[email protected]' => 'John Doe')) 
    ->setBody('Here is the message itself') 
; 

// Send the message 
$result = $mailer->send($message); 

Symfony2 में, आप swiftmailer सेवा कॉन्फ़िगर कर सकते हैं TLS एन्क्रिप्शन का उपयोग करें:

# app/config/config.yml 
swiftmailer: 
    transport: smtp 
    host:  email-smtp.us-east-1.amazonaws.com 
    username: AWS_ACCESS_KEY 
    password: AWS_SECRET_KEY 
    encryption: tls 

ईसी 2 इंस्टेंस पर स्थापित मेलसेवर से सीधे ईमेल भेजना बहुत विश्वसनीय नहीं है क्योंकि ईसी 2 आईपी पते को ब्लैकलिस्ट किया जा सकता है। एक विश्वसनीय मेलसर्वर का उपयोग करने की अनुशंसा की जाती है ताकि एसईएस का उपयोग करना एक अच्छा विचार हो।

7

Symfony2 के माध्यम से एसईएस के माध्यम से मेल भेजा जा रहा है मेरे लिए बॉक्स से बाहर काम नहीं किया क्योंकि मैं स्पूल विकल्प मेरी config.yml में विन्यस्त किया था।

एक और समस्या जिस पर मैंने ठोकर खाई थी वह बंदरगाह था। पोर्ट 25 और 587 सही काम करते हैं लेकिन मुझे एक टाइमआउट मिला।

और यह महत्वपूर्ण है कि आप सही SMTP सर्वर का उपयोग कर रहे हों, सबसे पहले मैं हमें-पूर्व -1 का उपयोग कर रहा था (क्योंकि मैंने इसे एक उदाहरण से कॉपी किया था) हालांकि मेरा एसएमटीपी वास्तव में ईमेल-smtp.eu-west-1 था। amazonaws.com

तो यहाँ मेरे वर्तमान config है:

parameters: 
    mailer_transport: smtp 
    mailer_host: email-smtp.eu-west-1.amazonaws.com 
    mailer_user: AWS_ACCESS_KEY 
    mailer_password: AWS_SECRET_KEY 
    mailer_encryption: tls 
    mailer_port: 587 

swiftmailer: 
    transport: %mailer_transport% 
    host:  %mailer_host% 
    username: %mailer_user% 
    password: %mailer_password% 
    encryption: "%mailer_encryption%" 
    port: %mailer_port% 
    auth_mode: login 

मैं अपने कमांड लाइन पर निम्नलिखित को निष्पादित करके समस्या दिखाई दी:

php app/console swiftmailer:debug 
+1

पोर्ट 465 परिणामों का उपयोग करने जैसा लगता है '[स्विफ्ट_TransportException] होस्ट ईमेल-smtp.us-east-1.amazonaws.com के साथ कनेक्शन स्थापित नहीं किया जा सका [कनेक्शन समय # 110] 'पोर्ट 587 में बदलना समस्या को हल करता है –

+0

धन्यवाद '587' की चाल के लिए! मुझे '487'' के साथ टाइमआउट भी मिल रहा था – Cassiano

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