mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
- 아래에 이미 author 언급이 있으므로 중복되는 저작권 표기는 제거 - 클래스 하단에 불필요한 end of file 표시 제거 (파일 하나에 클래스 하나씩이므로 파일이 중간에 끊겼다면 클래스가 닫히지 않아 쉽게 알 수 있음)
241 lines
4.8 KiB
PHP
241 lines
4.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Mail class for XE Compatibility
|
|
*/
|
|
class Mail extends Rhymix\Framework\Mail
|
|
{
|
|
/**
|
|
* Set parameters for using Gmail
|
|
*
|
|
* @param string $account_name Email address
|
|
* @param string $account_passwd Email password
|
|
* @return void
|
|
*/
|
|
public static function useGmailAccount($account_name, $account_passwd)
|
|
{
|
|
self::useSMTP(null, 'smtp.gmail.com', $account_name, $account_passwd, 'ssl', 465);
|
|
}
|
|
|
|
/**
|
|
* Set parameters for using SMTP protocol
|
|
*
|
|
* @param bool $auth SMTP authentication
|
|
* @param string $host SMTP host address
|
|
* @param string $user SMTP user id
|
|
* @param string $pass STMP user password
|
|
* @param string $secure method ('ssl','tls')
|
|
* @param int $port STMP port
|
|
*
|
|
* @return bool TRUE if SMTP is set correct, otherwise return FALSE
|
|
*/
|
|
public static function useSMTP($auth = null, $host = null, $user = null, $pass = null, $secure = null, $port = 25)
|
|
{
|
|
self::setDefaultDriver(Rhymix\Framework\Drivers\Mail\SMTP::getInstance(array(
|
|
'smtp_host' => $host,
|
|
'smtp_port' => $port,
|
|
'smtp_security' => $secure,
|
|
'smtp_user' => $user,
|
|
'smtp_pass' => $pass,
|
|
)));
|
|
}
|
|
|
|
/**
|
|
* Set additional parameters
|
|
*/
|
|
public function setAdditionalParams($additional_params)
|
|
{
|
|
// no-op
|
|
}
|
|
|
|
/**
|
|
* Set the sender (From:).
|
|
*
|
|
* @param string $name Sender name
|
|
* @param string $email Sender email address
|
|
* @return void
|
|
*/
|
|
public function setSender($name, $email)
|
|
{
|
|
$this->setFrom($email, $name ?: null);
|
|
}
|
|
|
|
/**
|
|
* Get the sender.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getSender()
|
|
{
|
|
return $this->getFrom() ?: false;
|
|
}
|
|
|
|
/**
|
|
* Set Recipient (To:)
|
|
*
|
|
* @param string $name Recipient name
|
|
* @param string $email Recipient email address
|
|
* @return void
|
|
*/
|
|
public function setReceiptor($name, $email)
|
|
{
|
|
$this->message->setTo(array());
|
|
return $this->addTo($email, $name ?: null);
|
|
}
|
|
|
|
/**
|
|
* Get Recipient (To:)
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getReceiptor()
|
|
{
|
|
$list = $this->getRecipients();
|
|
return $list ? array_first($list) : false;
|
|
}
|
|
|
|
/**
|
|
* Set BCC
|
|
*
|
|
* @param string $bcc
|
|
* @return void
|
|
*/
|
|
public function setBCC($bcc)
|
|
{
|
|
$this->message->setBcc(array());
|
|
return $this->addBcc($bcc);
|
|
}
|
|
|
|
/**
|
|
* Get the Plain content of body message
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPlainContent()
|
|
{
|
|
return chunk_split(base64_encode(htmlspecialchars($this->message->getBody())));
|
|
}
|
|
|
|
/**
|
|
* Get the HTML content of body message
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getHTMLContent()
|
|
{
|
|
return chunk_split(base64_encode($this->content_type != 'text/html' ? nl2br($this->message->getBody()) : $this->message->getBody()));
|
|
}
|
|
|
|
/**
|
|
* Add file attachment
|
|
*
|
|
* @param string $original_filename Real path of file to attach
|
|
* @param string $filename File name to attach
|
|
* @return void
|
|
*/
|
|
public function addAttachment($original_filename, $filename)
|
|
{
|
|
return $this->attach($original_filename, $filename);
|
|
}
|
|
|
|
/**
|
|
* Add content attachment
|
|
*
|
|
* @param string $original_filename Real path of file to attach
|
|
* @param string $cid Content-CID
|
|
* @return void
|
|
*/
|
|
public function addCidAttachment($original_filename, $cid = null)
|
|
{
|
|
return $this->embed($original_filename, $cid);
|
|
}
|
|
|
|
/**
|
|
* Process the images from attachments
|
|
*
|
|
* @return void
|
|
*/
|
|
public function procAttachments()
|
|
{
|
|
// no-op
|
|
}
|
|
|
|
/**
|
|
* Process the images from body content. This functions is used if Mailer is set as mail not as SMTP
|
|
*
|
|
* @return void
|
|
*/
|
|
public function procCidAttachments()
|
|
{
|
|
// no-op
|
|
}
|
|
|
|
/**
|
|
* Check if DNS of param is real or fake
|
|
*
|
|
* @param string $email_address Email address to check
|
|
* @return bool
|
|
*/
|
|
public static function checkMailMX($email_address)
|
|
{
|
|
if(!self::isVaildMailAddress($email_address))
|
|
{
|
|
return FALSE;
|
|
}
|
|
list($user, $host) = explode("@", $email_address);
|
|
if(function_exists('checkdnsrr'))
|
|
{
|
|
if(checkdnsrr($host, "MX") || checkdnsrr($host, "A"))
|
|
{
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/**
|
|
* Check if this class supports Advanced Mailer features.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function isAdvancedMailer()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Check if param is a valid email or not
|
|
*
|
|
* @param string $email_address Email address to check
|
|
* @return string
|
|
*/
|
|
public static function isVaildMailAddress($email_address)
|
|
{
|
|
$validator = new \Egulias\EmailValidator\EmailValidator;
|
|
$rfc = new \Egulias\EmailValidator\Validation\RFCValidation;
|
|
if($validator->isValid($email_address, $rfc))
|
|
{
|
|
return $email_address;
|
|
}
|
|
else
|
|
{
|
|
return '';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gets the MIME type of param
|
|
*
|
|
* @param string $filename filename
|
|
* @return string MIME type of ext
|
|
*/
|
|
public static function returnMIMEType($filename)
|
|
{
|
|
return Rhymix\Framework\MIME::getTypeByFilename($filename);
|
|
}
|
|
|
|
}
|