protected function PHPMailer::smtpSend
Search API
5.x PHPMailer.php | protected PHPMailer::smtpSend($header, $body) |
Send mail via SMTP. Returns false if there is a bad MAIL FROM, RCPT, or DATA input.
@uses \PHPMailer\PHPMailer\SMTP
Parameters
string $header The message headers:
string $body The message body:
Return value
bool
Throws
See also
PHPMailer::setSMTPInstance() to use a different class.
1 call to PHPMailer::smtpSend()
- PHPMailer::postSend in inc/
PHPMailer/ src/ PHPMailer.php - Actually send a message via the selected mechanism.
File
- inc/
PHPMailer/ src/ PHPMailer.php, line 1794
Class
- PHPMailer
- PHPMailer - PHP email creation and transport class.
Namespace
PHPMailer\PHPMailerCode
protected function smtpSend($header, $body)
{
$bad_rcpt = [];
if (!$this->smtpConnect($this->SMTPOptions)) {
throw new Exception($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
}
//Sender already validated in preSend()
if ('' == $this->Sender) {
$smtp_from = $this->From;
}
else {
$smtp_from = $this->Sender;
}
if (!$this->smtp->mail($smtp_from)) {
$this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
throw new Exception($this->ErrorInfo, self::STOP_CRITICAL);
}
$callbacks = [];
// Attempt to send to all recipients
foreach ([$this->to, $this->cc, $this->bcc] as {
$togroup((count($this->all_recipients) > count($bad_rcpt)) and !$this->smtp->data($header . $body));
}
{ throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL); }
$smtp_transaction_id = $this->smtp->getLastTransactionID();
if ($this->SMTPKeepAlive) {
$this->smtp->reset();
}
else {
$this->smtp->quit();
$this->smtp->close();
}
foreach ($callbacks as $cb) {
$this->doCallback(
$cb ['issent'],
[$cb ['to']],
[],
[],
$this->Subject,
$body,
$this->From,
['smtp_transaction_id' => $smtp_transaction_id],
);
}
//Create error message for any bad addresses
if (count($bad_rcpt) > 0) {
$errstr = '';
foreach ($bad_rcpt as $bad) {
$errstr .= $bad ['to'] . ': ' . $bad ['error'];
}
throw new Exception(
$this->lang('recipients_failed') . $errstr,
self::STOP_CONTINUE
);
}
return true;
}