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 +26 -0
- app/code/community/Sendgrid/Mailtransport/Model/Email.php +46 -0
- app/code/community/Sendgrid/Mailtransport/Model/Email/Template.php +121 -0
- app/code/community/Sendgrid/Mailtransport/etc/adminhtml.xml +22 -0
- app/code/community/Sendgrid/Mailtransport/etc/config.xml +32 -0
- app/code/community/Sendgrid/Mailtransport/etc/system.xml +68 -0
- app/etc/modules/Sendgrid_Mailtransport.xml +9 -0
- package.xml +25 -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.
|
11 |
+

|
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. 
|
13 |
+

|
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.
|
15 |
+

|
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.
|
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>
|