コード例 #1
0
ファイル: Mailer.php プロジェクト: nicksergio/TYPO3v4-Core
    /**
     * Prepares a transport using the TYPO3_CONF_VARS configuration
     *
     * Used options:
     * $TYPO3_CONF_VARS['MAIL']['transport'] = 'smtp' | 'sendmail' | 'mail' | 'mbox'
     *
     * $TYPO3_CONF_VARS['MAIL']['transport_smtp_server'] = 'smtp.example.org';
     * $TYPO3_CONF_VARS['MAIL']['transport_smtp_port'] = '25';
     * $TYPO3_CONF_VARS['MAIL']['transport_smtp_encrypt'] = FALSE; # requires openssl in PHP
     * $TYPO3_CONF_VARS['MAIL']['transport_smtp_username'] = '******';
     * $TYPO3_CONF_VARS['MAIL']['transport_smtp_password'] = '******';
     *
     * $TYPO3_CONF_VARS['MAIL']['transport_sendmail_command'] = '/usr/sbin/sendmail -bs'
     *
     * @throws \TYPO3\CMS\Core\Exception
     * @throws \RuntimeException
     */
    private function initializeTransport()
    {
        switch ($this->mailSettings['transport']) {
            case 'smtp':
                // Get settings to be used when constructing the transport object
                list($host, $port) = preg_split('/:/', $this->mailSettings['transport_smtp_server']);
                if ($host === '') {
                    throw new \TYPO3\CMS\Core\Exception('$TYPO3_CONF_VARS[\'MAIL\'][\'transport_smtp_server\'] needs to be set when transport is set to "smtp"', 1291068606);
                }
                if ($port === '') {
                    $port = '25';
                }
                $useEncryption = $this->mailSettings['transport_smtp_encrypt'] ? $this->mailSettings['transport_smtp_encrypt'] : NULL;
                // Create our transport
                $this->transport = \Swift_SmtpTransport::newInstance($host, $port, $useEncryption);
                // Need authentication?
                $username = $this->mailSettings['transport_smtp_username'];
                if ($username !== '') {
                    $this->transport->setUsername($username);
                }
                $password = $this->mailSettings['transport_smtp_password'];
                if ($password !== '') {
                    $this->transport->setPassword($password);
                }
                break;
            case 'sendmail':
                $sendmailCommand = $this->mailSettings['transport_sendmail_command'];
                if (empty($sendmailCommand)) {
                    throw new \TYPO3\CMS\Core\Exception('$TYPO3_CONF_VARS[\'MAIL\'][\'transport_sendmail_command\'] needs to be set when transport is set to "sendmail"', 1291068620);
                }
                // Create our transport
                $this->transport = \Swift_SendmailTransport::newInstance($sendmailCommand);
                break;
            case 'mbox':
                $mboxFile = $this->mailSettings['transport_mbox_file'];
                if ($mboxFile == '') {
                    throw new \TYPO3\CMS\Core\Exception('$TYPO3_CONF_VARS[\'MAIL\'][\'transport_mbox_file\'] needs to be set when transport is set to "mbox"', 1294586645);
                }
                // Create our transport
                $this->transport = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MboxTransport', $mboxFile);
                break;
            case 'mail':
                // Create the transport, no configuration required
                $this->transport = \Swift_MailTransport::newInstance();
                break;
            default:
                // Custom mail transport
                $customTransport = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance($this->mailSettings['transport'], $this->mailSettings);
                if ($customTransport instanceof \Swift_Transport) {
                    $this->transport = $customTransport;
                } else {
                    throw new \RuntimeException($this->mailSettings['transport'] . ' is not an implementation of \\Swift_Transport,
							but must implement that interface to be used as a mail transport.', 1323006478);
                }
        }
    }
コード例 #2
0
 /**
  * Prepares a transport using the TYPO3_CONF_VARS configuration
  *
  * Used options:
  * $TYPO3_CONF_VARS['MAIL']['transport'] = 'smtp' | 'sendmail' | 'mail' | 'mbox'
  *
  * $TYPO3_CONF_VARS['MAIL']['transport_smtp_server'] = 'smtp.example.org';
  * $TYPO3_CONF_VARS['MAIL']['transport_smtp_port'] = '25';
  * $TYPO3_CONF_VARS['MAIL']['transport_smtp_encrypt'] = FALSE; # requires openssl in PHP
  * $TYPO3_CONF_VARS['MAIL']['transport_smtp_username'] = '******';
  * $TYPO3_CONF_VARS['MAIL']['transport_smtp_password'] = '******';
  *
  * $TYPO3_CONF_VARS['MAIL']['transport_sendmail_command'] = '/usr/sbin/sendmail -bs'
  *
  * @throws t3lib_exception
  */
 private function initializeTransport()
 {
     $mailSettings = $GLOBALS['TYPO3_CONF_VARS']['MAIL'];
     switch ($mailSettings['transport']) {
         case 'smtp':
             // Get settings to be used when constructing the transport object
             list($host, $port) = preg_split('/:/', $mailSettings['transport_smtp_server']);
             if ($host === '') {
                 throw new t3lib_exception('$TYPO3_CONF_VARS[\'MAIL\'][\'transport_smtp_server\'] needs to be set when transport is set to "smtp"', 1291068606);
             }
             if ($port === '') {
                 $port = '25';
             }
             $useEncryption = $mailSettings['transport_smtp_encrypt'] ? TRUE : FALSE;
             // Create our transport
             $this->transport = Swift_SmtpTransport::newInstance($host, $port, $useEncryption);
             // Need authentication?
             $username = $mailSettings['transport_smtp_username'];
             if ($username !== '') {
                 $this->transport->setUsername($username);
             }
             $password = $mailSettings['transport_smtp_password'];
             if ($password !== '') {
                 $this->transport->setPassword($password);
             }
             break;
         case 'sendmail':
             $sendmailCommand = $mailSettings['transport_sendmail_command'];
             if ($sendmailCommand === '') {
                 throw new t3lib_exception('$TYPO3_CONF_VARS[\'MAIL\'][\'transport_sendmail_command\'] needs to be set when transport is set to "sendmail"', 1291068620);
             }
             // Create our transport
             $this->transport = Swift_SendmailTransport::newInstance($sendmailCommand);
             break;
         case 'mbox':
             $mboxFile = $mailSettings['transport_mbox_file'];
             if ($mboxFile == '') {
                 throw new t3lib_exception('$TYPO3_CONF_VARS[\'MAIL\'][\'transport_mbox_file\'] needs to be set when transport is set to "mbox"');
             }
             // Create our transport
             $this->transport = t3lib_div::makeInstance('t3lib_mail_mboxtransport', $mboxFile);
             break;
         case 'mail':
         default:
             // Create the transport, no configuration required
             $this->transport = Swift_MailTransport::newInstance();
             break;
     }
     return;
 }