nextcloud/lib/mail.php

134 lines
3.4 KiB
PHP
Raw Normal View History

<?php
/**
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
/**
* OC_Mail
*
* A class to handle mail sending.
*/
2012-09-06 01:28:59 +04:00
require_once 'class.phpmailer.php';
class OC_Mail {
/**
2012-08-29 10:38:33 +04:00
* send an email
*
* @param string $toaddress
* @param string $toname
* @param string $subject
* @param string $mailtext
* @param string $fromaddress
* @param string $fromname
2013-01-02 22:04:08 +04:00
* @param bool|int $html
* @param string $altbody
* @param string $ccaddress
* @param string $ccname
* @param string $bcc
* @throws Exception
*/
2013-02-11 20:44:02 +04:00
public static function send($toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname,
$html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') {
$SMTPMODE = OC_Config::getValue( 'mail_smtpmode', 'sendmail' );
$SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' );
2013-01-02 22:04:08 +04:00
$SMTPPORT = OC_Config::getValue( 'mail_smtpport', 25 );
2012-08-29 10:38:33 +04:00
$SMTPAUTH = OC_Config::getValue( 'mail_smtpauth', false );
$SMTPAUTHTYPE = OC_Config::getValue( 'mail_smtpauthtype', 'LOGIN' );
2012-08-29 10:38:33 +04:00
$SMTPUSERNAME = OC_Config::getValue( 'mail_smtpname', '' );
$SMTPPASSWORD = OC_Config::getValue( 'mail_smtppassword', '' );
$SMTPDEBUG = OC_Config::getValue( 'mail_smtpdebug', false );
$SMTPTIMEOUT = OC_Config::getValue( 'mail_smtptimeout', 10 );
$SMTPSECURE = OC_Config::getValue( 'mail_smtpsecure', '' );
2012-07-11 23:52:51 +04:00
$mailo = new PHPMailer(true);
if($SMTPMODE=='sendmail') {
$mailo->IsSendmail();
2012-09-07 17:22:01 +04:00
}elseif($SMTPMODE=='smtp') {
$mailo->IsSMTP();
2012-09-07 17:22:01 +04:00
}elseif($SMTPMODE=='qmail') {
$mailo->IsQmail();
}else{
$mailo->IsMail();
}
$mailo->Host = $SMTPHOST;
2013-01-02 22:04:08 +04:00
$mailo->Port = $SMTPPORT;
$mailo->SMTPAuth = $SMTPAUTH;
$mailo->SMTPDebug = $SMTPDEBUG;
$mailo->SMTPSecure = $SMTPSECURE;
$mailo->AuthType = $SMTPAUTHTYPE;
$mailo->Username = $SMTPUSERNAME;
$mailo->Password = $SMTPPASSWORD;
$mailo->Timeout = $SMTPTIMEOUT;
$mailo->From = $fromaddress;
$mailo->FromName = $fromname;;
$mailo->Sender = $fromaddress;
2012-11-02 22:53:02 +04:00
$a=explode(' ', $toaddress);
2012-07-11 23:36:27 +04:00
try {
foreach($a as $ad) {
2012-11-02 22:53:02 +04:00
$mailo->AddAddress($ad, $toname);
2012-07-11 23:36:27 +04:00
}
2012-11-02 22:53:02 +04:00
if($ccaddress<>'') $mailo->AddCC($ccaddress, $ccname);
2012-07-11 23:36:27 +04:00
if($bcc<>'') $mailo->AddBCC($bcc);
$mailo->AddReplyTo($fromaddress, $fromname);
$mailo->WordWrap = 50;
if($html==1) $mailo->IsHTML(true); else $mailo->IsHTML(false);
$mailo->Subject = $subject;
if($altbody=='') {
$mailo->Body = $mailtext.OC_MAIL::getfooter();
$mailo->AltBody = '';
}else{
$mailo->Body = $mailtext;
$mailo->AltBody = $altbody;
}
$mailo->CharSet = 'UTF-8';
$mailo->Send();
unset($mailo);
2013-02-11 20:44:02 +04:00
OC_Log::write('mail',
'Mail from '.$fromname.' ('.$fromaddress.')'.' to: '.$toname.'('.$toaddress.')'.' subject: '.$subject,
OC_Log::DEBUG);
2012-07-11 23:36:27 +04:00
} catch (Exception $exception) {
OC_Log::write('mail', $exception->getMessage(), OC_Log::ERROR);
throw($exception);
}
}
/**
2012-06-06 16:18:30 +04:00
* return the footer for a mail
*
*/
public static function getfooter() {
$defaults = new OC_Defaults();
$txt="\n--\n";
$txt.=$defaults->getName() . "\n";
$txt.=$defaults->getSlogan() . "\n";
return($txt);
}
/**
* @param string $emailAddress a given email address to be validated
* @return bool
*/
public static function ValidateAddress($emailAddress) {
return PHPMailer::ValidateAddress($emailAddress);
}
}