Source for file template_newsletter.php
Documentation is available at template_newsletter.php
* @author linea21 <info@linea21.com>
* @license http://opensource.org/licenses/gpl-3.0.html
* http://www.howtoforge.com/forums/showthread.php?t=4
$needles = array('href="', 'src="', 'background="');
if(substr($base_url,- 1) != '/') $base_url .= '/';
$new_base_url = $base_url;
foreach($needles as $needle){
while($pos = strpos($txt, $needle)){
if(substr($txt,$pos,7) != 'http://' && substr($txt,$pos,8) != 'https://' && substr($txt,$pos,6) != 'ftp://' && substr($txt,$pos,7) != 'mailto:'){
if(substr($txt,$pos,1) == '/') $new_base_url = $base_url_parts['scheme']. '://'. $base_url_parts['host'];
$new_txt .= substr($txt,0,$pos). $new_base_url;
$new_txt .= substr($txt,0,$pos);
require_once '../lib/vendor/swift/lib/swift_required.php';
// We create the Transport
$transport = Swift_MailTransport::newInstance();
if(MAIL_MAILER== 'sendmail') {
$transport = Swift_SendmailTransport::newInstance(MAIL_SENDMAIL);
if(MAIL_MAILER== 'smtp') {
if(defined('MAIL_SMTP_AUTH') && MAIL_SMTP_AUTH == 1) {
$transport = Swift_SmtpTransport::newInstance(MAIL_HOST, MAIL_PORT)
->setUsername(MAIL_SMTP_USER)
->setPassword(MAIL_SMTP_PASS);
$transport = Swift_SmtpTransport::newInstance(MAIL_HOST, MAIL_PORT);
// Create the Mailer using the Transport
$mailer = Swift_Mailer::newInstance($transport);
echo "destinataire : ".$email_recipient."<br />";
echo "sujet : ".$email_subject."<br />";
echo "body : ".$email_html_body."<br />";
echo "methode : ".$email_method."<br />";
echo "host : ".$mail->Host."<br />";
echo "port : ".$mail->Port."<br />";
for($i = 0;$i < count($newsletters); $i++ ) {
$newsletter_id = $newsletters[$i]['newsletter_id'];
$email_subject = formatText($newsletters[$i]['newsletter_title'], '2HTML');
$newsletter_body_html = formatText($newsletters[$i]['newsletter_body'], '2HTML');
preg_replace("/(<\s*(a|img)\s+[^>]*(href|src)\s*=\s*[\"'])(?!http)([^\"'>]+)[\"'>]/", "$1". CURRENT_APP_URL. "$4", $newsletter_body_html);
$email_html_body= str_replace('##TITLE##', $email_subject, $template_html);
$email_html_body= str_replace('##CHARSET##', CHARSET, $email_html_body);
$email_html_body= str_replace('##CONTENTS##', $newsletter_body_html, $email_html_body);
$email_html_body= str_replace('##SITENAME##', SITE_NAME, $email_html_body);
$email_html_body= str_replace('##CSSPATH##', SITE_ROOT_URL. THEME_DIRECTORY. '/public/'. THEME_PUBLIC. '/css/', $email_html_body);
$email_html_body= str_replace('##SITEURL##', SITE_ROOT_URL, $email_html_body);
$email_html_body= str_replace('##SITEMAIL##', SITE_MAIL, $email_html_body);
$email_html_body= absolute_url($email_html_body, SITE_ROOT_URL);
$newsletter_body_txt = formatText($newsletters[$i]['newsletter_body']);
$email_text_body= str_replace('##SITENAME##', SITE_NAME, $email_text_body);
$email_text_body= str_replace('##SITEURL##', SITE_ROOT_URL, $email_text_body);
$email_text_body= str_replace('##SITEMAIL##', SITE_MAIL, $email_text_body);
$email_text_body= absolute_url($email_text_body, SITE_ROOT_URL);
isset ($email_from) ? $from = $email_from : $from = MAIL_FROM;
isset ($email_fromname) ? $fromname = $email_fromname : $fromname = MAIL_FROMNAME;
$altbody = str_replace('&', '&', $email_text_body);
// Create a message instance
$message = Swift_Message::newInstance($email_subject)
->setFrom(array($from => $fromname))
->setReplyTo(array(MAIL_REPLY => MAIL_REPLYNAME)) ;
for($k = 0; $k < count($emails_batch); $k++ ) {
$email_id = $emails_batch[$k]['emailcol_id'];
$email_recipient = $emails_batch[$k]['emailcol_email'];
// we create the link to unsubscribe newsletter and add it to the message
$unsubscribe_url= SITE_ROOT_URL. 'public/index.php?rub='. $GLOBALS['links'][U_L]['subscribe-newsletter']['linkvalue']. '&del_action=on&newsletteremail='. $email_recipient;
$unsubscribe_link_html = sprintf(_t('newsletter', 'unsubscribe_html'), $unsubscribe_url);
$unsubscribe_link_txt = _t('newsletter', 'unsubscribe_txt'). ' '. $unsubscribe_url;
$email_html_body= str_replace('##UNSUBSCRIBE_LINK##', $unsubscribe_link_html, $email_html_body);
$email_text_body= str_replace('##UNSUBSCRIBE_LINK##', $unsubscribe_link_txt, $email_text_body);
// finish message settings
$message->setBody($email_html_body, 'text/html')->addPart($altbody, 'text/plain')->setTo($email_recipient);
$r = $mailer->Send($message, $failures);
logfile(LOG_MAILING, array($email_subject, $newsletter_id, $email_recipient, $logmsg));
if(!isset ($doNotPublish)) $newsletter_object->SetNewsletterPublished($newsletter_id, $sql_object);
|