Я пытаюсь заменить приведенный ниже SMTP-клиент на поддельный SMTP-сервер, чтобы использовать его в целях разработки. Я использую https://www.drupal.org/project/smtp, но все, что я пробовал, не удалось. В тексте почтового сообщения я также включаю html.
Как бы вы предложили мне отредактировать приведенный ниже код, чтобы иметь возможность отправлять электронные письма через механизм drupal smtp? Я установил детали сервера smtp в настройках модуля smtp.
функция send_email ($ data, $ simulate = 0) {
$kok = '';
if ($data['p_nid']) {
$pon = node_load($data['p_nid']);
$kok = node_load($pon->og_group_ref['und'][0]['target_id']);
if ($pon->field_wrong_email['und'][0]['value']) return 0;
}
if ($data['l_nid']) $kok = node_load($data['l_nid']);
$gid = $kok->nid ? $kok->nid : $data['gid'];
//create the senddata array
$send_data = [
'sender' => $data['from'],
'to' => $data['to'],
'subject' => $data['subject'],
'htmlContent' => $data['message']
];
//attaching files if exist
if (is_array($data['attachments'])) $send_data['attachment'] = $data['attachments'];
if (is_array($data['files'])) {
foreach ($data['files'] as $file) {
$name = str_replace('.log','.txt',drupal_basename($file));
$send_data['attachment'][] = ['content'=>base64_encode(file_get_contents($file)), 'name'=>$name];
}
}
//from
$str = $kok->title;
if (mb_substr($str,0,68) != $str) {
if ($kok->field_email_from['und'][0]['value']) $str = $kok->field_email_from['und'][0]['value'];
else $str = mb_substr($str,0,68);
}
if (!$data['from']) {
$send_data['sender'] = ['email'=>'someemail', 'name'=>'name'];
if ($kok->nid) {
$send_data['sender'] = ['email'=>'someemail', 'name'=>str_replace(',',' ',$str)];
}
}
//reply-to
if (($kok->nid) and ($kok->field_email['und'][0]['email'])) {
$send_data['replyTo'] = ['email'=>$kok->field_email['und'][0]['email'], 'name'=> str_replace(',',' ',$str)];
}
$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'APIKEYHERE');
$apiInstance = new SendinBlue\Client\Api\SMTPApi(
new GuzzleHttp\Client(),
$config
);
$sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail($send_data);
if (!$simulate) {
try {
$result = $apiInstance->sendTransacEmail($sendSmtpEmail);
$msg_id = $result->getMessageId();
} catch (Exception $e) {
echo 'Exception when calling SMTPApi->sendTransacEmail: ', $e->getCode().' '.$e->getMessage(), PHP_EOL;
$err_msg = $e->getCode().' '.$e->getMessage(). ' l_nid='.$kok->nid.' '.$kok->title.' p_nid='.$data['p_nid'].' email_to='.$data['to']['email'].' '.var_dump($send_data);
watchdog('sendinblue',$err_msg,[],WATCHDOG_ALERT);
$msg = $e->getMessage();
$pos = strpos($msg,'response:');
$json = substr($msg, $pos+9, 1000);
$json = json_decode($json);
if (is_object($json) and ($json->message == "email is not valid in to")) {
$pon = node_load($data['p_nid']);
$pon->field_wrong_email['und'][0]['value'] = 1;
node_save($pon);
}
}