Sendgrid_Email_Delivery - Version 1.0.0

Version Notes

Provides email sending functionality.

Download this release

Release Info

Developer Team RS
Extension Sendgrid_Email_Delivery
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

app/code/community/Sendgrid/Mailtransport/Helper/Data.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento SendGrid SMTP send
4
+ *
5
+ * @category SendGrid
6
+ * @package Sendgrid_Mailtransport
7
+ * @copyright Copyright (c) 2013 SendGrid.com
8
+ * @author Reseller Team ( www.sendgrid.com )
9
+ */
10
+ class Sendgrid_Mailtransport_Helper_Data extends Mage_Core_Helper_Abstract
11
+ {
12
+ public function getTransport()
13
+ {
14
+ $config = array(
15
+ 'ssl' => 'tls',
16
+ 'port' => 587,
17
+ 'auth' => 'login',
18
+ 'username' => Mage::getStoreConfig('sendgridsettings/general/sendgrid_username'),
19
+ 'password' => Mage::getStoreConfig('sendgridsettings/general/sendgrid_password'));
20
+
21
+ $transport = new Zend_Mail_Transport_Smtp('smtp.sendgrid.net', $config);
22
+
23
+ return $transport;
24
+ }
25
+ }
26
+
app/code/community/Sendgrid/Mailtransport/Model/Email.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento SendGrid SMTP send
4
+ *
5
+ * @category SendGrid
6
+ * @package Sendgrid_Mailtransport
7
+ * @copyright Copyright (c) 2013 SendGrid.com
8
+ * @author Reseller Team ( www.sendgrid.com )
9
+ */
10
+ class Sendgrid_Mailtransport_Model_Email extends Mage_Core_Model_Email
11
+ {
12
+ public function send()
13
+ {
14
+ if (!Mage::getStoreConfig('sendgridsettings/general/sendgrid_enabled'))
15
+ {
16
+ return parent::send();
17
+ }
18
+
19
+ if (Mage::getStoreConfigFlag('system/smtp/disable'))
20
+ {
21
+ return $this;
22
+ }
23
+
24
+ $mail = new Zend_Mail();
25
+
26
+ if (strtolower($this->getType()) == 'html')
27
+ {
28
+ $mail->setBodyHtml($this->getBody());
29
+ }
30
+ else
31
+ {
32
+ $mail->setBodyText($this->getBody());
33
+ }
34
+
35
+ $mail->setFrom($this->getFromEmail(), $this->getFromName())
36
+ ->addTo($this->getToEmail(), $this->getToName())
37
+ ->setSubject($this->getSubject())
38
+ ->addHeader('X-SMTPAPI', '{"category": "magento_sendgrid_plugin"}', true);
39
+
40
+ $transport = Mage::helper('mailtransport')->getTransport();
41
+
42
+ $mail->send($transport);
43
+
44
+ return $this;
45
+ }
46
+ }
app/code/community/Sendgrid/Mailtransport/Model/Email/Template.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento SendGrid SMTP send
4
+ *
5
+ * @category SendGrid
6
+ * @package Sendgrid_Mailtransport
7
+ * @copyright Copyright (c) 2013 SendGrid.com
8
+ * @author Reseller Team ( www.sendgrid.com )
9
+ */
10
+ class Sendgrid_Mailtransport_Model_Email_Template extends Mage_Core_Model_Email_Template
11
+ {
12
+ /**
13
+ * Send mail to recipient
14
+ *
15
+ * @param array|string $email E-mail(s)
16
+ * @param array|string|null $name receiver name(s)
17
+ * @param array $variables template variables
18
+ * @return boolean
19
+ */
20
+ public function send($email, $name = null, array $variables = array())
21
+ {
22
+ Mage::log("Sendgrid send: " . Mage::getStoreConfig('sendgridsettings/general/sendgrid_enabled'));
23
+ if (!Mage::getStoreConfig('sendgridsettings/general/sendgrid_enabled'))
24
+ {
25
+ return parent::send($email, $name, $variables);
26
+ }
27
+
28
+ if (!$this->isValidForSend())
29
+ {
30
+ Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted
31
+
32
+ return false;
33
+ }
34
+
35
+ $emails = array_values((array)$email);
36
+ $names = is_array($name) ? $name : (array)$name;
37
+ $names = array_values($names);
38
+
39
+ foreach ($emails as $key => $email)
40
+ {
41
+ if (!isset($names[$key]))
42
+ {
43
+ $names[$key] = substr($email, 0, strpos($email, '@'));
44
+ }
45
+ }
46
+
47
+ $variables['email'] = reset($emails);
48
+ $variables['name'] = reset($names);
49
+
50
+ ini_set('SMTP', Mage::getStoreConfig('system/smtp/host'));
51
+ ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
52
+
53
+ $mail = $this->getMail();
54
+
55
+ $setReturnPath = Mage::getStoreConfig(self::XML_PATH_SENDING_SET_RETURN_PATH);
56
+ switch ($setReturnPath)
57
+ {
58
+ case 1:
59
+ {
60
+ $returnPathEmail = $this->getSenderEmail();
61
+
62
+ break;
63
+ }
64
+ case 2:
65
+ {
66
+ $returnPathEmail = Mage::getStoreConfig(self::XML_PATH_SENDING_RETURN_PATH_EMAIL);
67
+
68
+ break;
69
+ }
70
+ default:
71
+ {
72
+ $returnPathEmail = null;
73
+
74
+ break;
75
+ }
76
+ }
77
+
78
+ if ($returnPathEmail !== null)
79
+ {
80
+ $mailTransport = new Zend_Mail_Transport_Sendmail("-f" . $returnPathEmail);
81
+ Zend_Mail::setDefaultTransport($mailTransport);
82
+ }
83
+
84
+ foreach ($emails as $key => $email)
85
+ {
86
+ $mail->addTo($email, '=?utf-8?B?' . base64_encode($names[$key]) . '?=');
87
+ }
88
+
89
+ $this->setUseAbsoluteLinks(true);
90
+ $text = $this->getProcessedTemplate($variables, true);
91
+
92
+ if($this->isPlain())
93
+ {
94
+ $mail->setBodyText($text);
95
+ }
96
+ else
97
+ {
98
+ $mail->setBodyHTML($text);
99
+ }
100
+
101
+ $mail->setSubject('=?utf-8?B?' . base64_encode($this->getProcessedTemplateSubject($variables)) . '?=')
102
+ ->setFrom($this->getSenderEmail(), $this->getSenderName())
103
+ ->addHeader('X-SMTPAPI', '{"category": "magento_sendgrid_plugin"}', true);
104
+
105
+ try
106
+ {
107
+ $transport = Mage::helper('mailtransport')->getTransport();
108
+ $mail->send($transport);
109
+ $this->_mail = null;
110
+ }
111
+ catch (Exception $e)
112
+ {
113
+ $this->_mail = null;
114
+ Mage::logException($e);
115
+
116
+ return false;
117
+ }
118
+
119
+ return true;
120
+ }
121
+ }
app/code/community/Sendgrid/Mailtransport/etc/adminhtml.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <sendgridsettings>
12
+ <title>Settings</title> <!-- Used in resources tree -->
13
+ </sendgridsettings>
14
+ </children>
15
+ </config>
16
+ </children>
17
+ </system>
18
+ </children>
19
+ </admin>
20
+ </resources>
21
+ </acl>
22
+ </config>
app/code/community/Sendgrid/Mailtransport/etc/config.xml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sendgrid_Mailtransport>
5
+ <version>0.1.0</version>
6
+ </Sendgrid_Mailtransport>
7
+ </modules>
8
+ <global>
9
+ <models>
10
+ <core>
11
+ <rewrite>
12
+ <email>Sendgrid_Mailtransport_Model_Email</email>
13
+ <email_template>Sendgrid_Mailtransport_Model_Email_Template</email_template>
14
+ </rewrite>
15
+ </core>
16
+ </models>
17
+ <helpers>
18
+ <mailtransport>
19
+ <class>Sendgrid_Mailtransport_Helper</class>
20
+ </mailtransport>
21
+ </helpers>
22
+ </global>
23
+ <default>
24
+ <sendgridsettings>
25
+ <general>
26
+ <sendgrid_enabled>0</sendgrid_enabled>
27
+ <sendgrid_username></sendgrid_username>
28
+ <sendgrid_password></sendgrid_password>
29
+ </general>
30
+ </sendgridsettings>
31
+ </default>
32
+ </config>
app/code/community/Sendgrid/Mailtransport/etc/system.xml ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <sendgridconf translate="label">
5
+ <label>SendGrid Mail Transport</label>
6
+ <sort_order>150</sort_order>
7
+ </sendgridconf>
8
+ </tabs>
9
+ <sections>
10
+ <sendgridsettings translate="label" module="adminhtml">
11
+ <label>Settings</label>
12
+ <tab>sendgridconf</tab>
13
+ <sort_order>10</sort_order>
14
+ <show_in_default>1</show_in_default>
15
+ <show_in_website>1</show_in_website>
16
+ <show_in_store>1</show_in_store>
17
+ <groups>
18
+ <general translate="label comment">
19
+ <label>SendGrid SMTP Settings</label>
20
+ <sort_order>50</sort_order>
21
+ <show_in_default>1</show_in_default>
22
+ <show_in_website>1</show_in_website>
23
+ <show_in_store>1</show_in_store>
24
+ <comment><![CDATA[SendGrid's cloud-based email infrastructure relieves businesses of the cost and complexity of maintaining custom email systems. SendGrid provides reliable delivery, scalability, and real-time analytics, along with flexible APIs that make custom integration a breeze.<br /> Before to use this plugin, you'll need to create your very own SendGrid account. Go ahead and do so at <a href="http://sendgrid.com/partner/magento" target="_blank">http://sendgrid.com/partner/magento</a>]]></comment>
25
+ <expanded>1</expanded>
26
+ <fields>
27
+ <sendgrid_enabled translate="label comment">
28
+ <label>Enable SendGrid SMTP</label>
29
+ <comment>Enable send email via SendGrid.</comment>
30
+ <frontend_type>select</frontend_type>
31
+ <source_model>adminhtml/system_config_source_yesno</source_model>
32
+ <sort_order>1</sort_order>
33
+ <show_in_default>1</show_in_default>
34
+ <show_in_website>1</show_in_website>
35
+ <show_in_store>0</show_in_store>
36
+ </sendgrid_enabled>
37
+ <sendgrid_username translate="label comment">
38
+ <label>Username</label>
39
+ <validate>required-entry</validate>
40
+ <comment>SendGrid username.</comment>
41
+ <frontend_type>text</frontend_type>
42
+ <sort_order>10</sort_order>
43
+ <show_in_default>1</show_in_default>
44
+ <show_in_website>1</show_in_website>
45
+ <show_in_store>0</show_in_store>
46
+ <depends>
47
+ <sendgrid_enabled>1</sendgrid_enabled>
48
+ </depends>
49
+ </sendgrid_username>
50
+ <sendgrid_password translate="label comment">
51
+ <label>Password</label>
52
+ <validate>required-entry</validate>
53
+ <comment>SendGrid password.</comment>
54
+ <frontend_type>password</frontend_type>
55
+ <sort_order>20</sort_order>
56
+ <show_in_default>1</show_in_default>
57
+ <show_in_website>1</show_in_website>
58
+ <show_in_store>0</show_in_store>
59
+ <depends>
60
+ <sendgrid_enabled>1</sendgrid_enabled>
61
+ </depends>
62
+ </sendgrid_password>
63
+ </fields>
64
+ </general>
65
+ </groups>
66
+ </sendgridsettings>
67
+ </sections>
68
+ </config>
app/etc/modules/Sendgrid_Mailtransport.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sendgrid_Mailtransport>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Sendgrid_Mailtransport>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Sendgrid_Email_Delivery</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL)</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>SendGrid is a cloud email service that delivers marketing and transactional emails on behalf of your store. </summary>
10
+ <description>Easily send marketing and transactional emails from a simple SMTP integration using SendGrid. Simply set-up your SendGrid account credentials and start sending emails immediately.&#xD;
11
+ &#xD;
12
+ Using SendGrid to power your emails with your Magento store provides you with increased email deliverability ensuring your important marketing and transactional such as receipts, notifications and password confirmations reach the inbox. &#xD;
13
+ &#xD;
14
+ Benefits include increased customer conversion, sales and engagement which will help you drive repeat purchases, reward loyalty and re-engage with those inactive customers.&#xD;
15
+ &#xD;
16
+ Once you start relaying your emails from your Magento site to SendGrid, you will be able to access the full suite of SendGrid statistics to track important metrics such as bounces, opens, clicks, unsubscribes and more leading to increased customer engagement.&#xD;
17
+ </description>
18
+ <notes>Provides email sending functionality.</notes>
19
+ <authors><author><name>Team RS</name><user>team_rs</user><email>team-rs@sendgrid.com</email></author></authors>
20
+ <date>2014-05-08</date>
21
+ <time>15:03:32</time>
22
+ <contents><target name="magecommunity"><dir name="Sendgrid"><dir name="Mailtransport"><dir name="Helper"><file name="Data.php" hash="7c48176d6fa030db6894fd94431c98d7"/></dir><dir name="Model"><dir name="Email"><file name="Template.php" hash="05a75814dd52e9b6c0701d51267c4fdd"/></dir><file name="Email.php" hash="7cfc3c124e034e41d1a833c91eda26e5"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c16624f5ac237d6c3bb5508cfc046990"/><file name="config.xml" hash="2957fef3e6fcaab5c6c98d93089e0510"/><file name="system.xml" hash="43011c7aff342e1107e7c02742b0b4f8"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Sendgrid_Mailtransport.xml" hash="febe453bd232794326f68a7b8cfb7a03"/></dir></target></contents>
23
+ <compatible/>
24
+ <dependencies><required><php><min>5.3.0</min><max>5.5.0</max></php></required></dependencies>
25
+ </package>