130 lines
3.4 KiB
PHP
130 lines
3.4 KiB
PHP
<?php
|
|
class Scores_Mail_Method extends Zend_Mail
|
|
{
|
|
protected $config;
|
|
protected $transport;
|
|
|
|
/**
|
|
* Gestion de l'envoi des mails en fonction de la configuration
|
|
* Fournir un objet de configuration ou utiliser la configuration de l'application
|
|
* method => smtp, sendmail, file
|
|
* Si method = smtp
|
|
* (host => IP, dns)
|
|
*
|
|
* Activer l'authentification
|
|
* (auth => login, plain, ....)
|
|
* (username => )
|
|
* (password => )
|
|
*/
|
|
public function __construct($config = null)
|
|
{
|
|
if ($config === null) {
|
|
$c = Zend_Registry::get('config');
|
|
$this->config = $c->profil->mail;
|
|
} else {
|
|
$this->config = $config;
|
|
}
|
|
|
|
$this->_charset = 'ISO-8859-15';
|
|
|
|
// --- Configuration du transport SMTP
|
|
if ($this->config->method == 'smtp') {
|
|
$config = array();
|
|
|
|
if (isset($this->config->auth)) {
|
|
$config['auth'] = $this->config->auth;
|
|
if (isset($this->config->username)) {
|
|
$config['username'] = $this->config->username;
|
|
}
|
|
if (isset($this->config->password)) {
|
|
$config['password'] = $this->config->password;
|
|
}
|
|
}
|
|
|
|
if (isset($this->config->port)) {
|
|
$config['port'] = $this->config->port;
|
|
}
|
|
|
|
$tr = new Zend_Mail_Transport_Smtp($this->config->host, $config);
|
|
}
|
|
|
|
// --- Configuration transport Sendmail
|
|
if ($this->config->method == 'sendmail') {
|
|
$tr = new Zend_Mail_Transport_Sendmail();
|
|
}
|
|
|
|
// --- Configuration transport File
|
|
if ($this->config->method == 'file') {
|
|
$tr = new Zend_Mail_Transport_File(array('callback' => array($this, 'recipientFilename')));
|
|
}
|
|
|
|
$this->transport = $tr;
|
|
}
|
|
|
|
/**
|
|
* Champ From en fonction de la clé de configuration
|
|
* @param string $configKey
|
|
*/
|
|
public function setFromKey($configKey)
|
|
{
|
|
$email = $this->config->email->$configKey;
|
|
$this->setFrom($email, ucfirst($configKey));
|
|
}
|
|
|
|
/**
|
|
* Champ To en fonction de la clé de configuration
|
|
* @param string $configKey
|
|
*/
|
|
public function addToKey($configKey)
|
|
{
|
|
$email = $this->config->email->$configKey;
|
|
$this->addTo($email, ucfirst($configKey));
|
|
}
|
|
|
|
/**
|
|
* Définit le sujet de l'email
|
|
* @param string $texte
|
|
*/
|
|
public function setSubjectC($texte = '')
|
|
{
|
|
$this->setSubject($this->txtConvert($texte));
|
|
}
|
|
|
|
/**
|
|
* Définit le corps de l'email au format texte
|
|
* @param string $texte
|
|
*/
|
|
public function setBodyTextC($texte = '')
|
|
{
|
|
$this->setBodyText($this->txtConvert($texte));
|
|
}
|
|
|
|
/**
|
|
* Définit le corps de l'email au format html
|
|
* @param string $html
|
|
*/
|
|
public function setBodyHtmlC($html = '')
|
|
{
|
|
$this->setBodyHtml($this->txtConvert($html));
|
|
}
|
|
|
|
/**
|
|
* Envoi de l'emai
|
|
*/
|
|
public function execute()
|
|
{
|
|
return $this->send($this->transport);
|
|
}
|
|
|
|
//We suppose that character encoding of strings is UTF-8 on PHP script.
|
|
protected function txtConvert($string)
|
|
{
|
|
return mb_convert_encoding($string, 'ISO-8859-1', 'UTF-8');
|
|
}
|
|
|
|
protected function recipientFilename($transport)
|
|
{
|
|
return $transport->recipients . '_' . mt_rand() . '.tmp';
|
|
}
|
|
}
|