*/ function send( \alveolata\email\struct_credentials $credentials, \alveolata\email\struct_data $data ) : void { $phpmailer = new \PHPMailer\PHPMailer\PHPMailer(true); // auth $phpmailer->Host = $credentials->host; $phpmailer->Port = \sprintf('%u', $credentials->port); $phpmailer->Username = $credentials->username; $phpmailer->Password = $credentials->password; $phpmailer->isSMTP(); // $phpmailer->SMTPDebug = \PHPMailer\PHPMailer\SMTP::DEBUG_SERVER; $phpmailer->SMTPAuth = ($credentials->negotiation_type !== \alveolata\email\enum_negotiation_type::none); $phpmailer->SMTPSecure = ([ \alveolata\email\enum_negotiation_type::none => null, \alveolata\email\enum_negotiation_type::opportunistic => \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS, \alveolata\email\enum_negotiation_type::forced => \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_SMTPS, ][$credentials->negotiation_type]); // data foreach ($data->to as $address) { $phpmailer->addAddress($address); } $phpmailer->Subject = $data->subject; if (! empty($data->from)) { $phpmailer->setFrom($data->from); } if (! empty($data->reply_to)) { $phpmailer->addReplyTo($data->reply_to); } foreach ($data->cc as $address) { $phpmailer->addCC($address); } foreach ($data->bcc as $address) { $phpmailer->addBCC($address); } foreach ($data->attachments as $attachment) { $phpmailer->addAttachment($attachment); } // body if (! empty($data->body_html)) { $phpmailer->isHTML(true); $phpmailer->Body = $data->body_html; if (! empty($data->body_plain)) { $phpmailer->AltBody = $data->body_plain; } } else { $phpmailer->Body = $data->body_plain; } // send $phpmailer->send(); } ?>