электронная почта — интеграция PHP с Clicatell SMTP API

Я пытаюсь отправить php, который будет отправлять электронную почту в Clicatell SMTP API. Идея проста — сделать вызовы с использованием клиента PHP SOAP на сервер SQL, получить ответ и вставить этот ответ в тело письма, отправленное на сервер Clicatell.

<?php

$to = 'sms@messaging.clickatell.com';

$today = strtoupper(date('dMy'));
$subject = 'Test sms sent on ' . $today;

// API request and response goes here
//this is how the response from the api looks like

$response ='To:4412345677693\r\nTo:4412345665693\r\nTo:4412375677693\r\nTo:4463879456776\r\n';

$message = 'api_id: 12345678\r\nuser:user1234\r\npassword:PxAxSxSxWxOxRxD\r\n' . $response . 'Reply: youremail@yourdomain.com\r\ntext:Test Message Using Clickatell api\r\n';

$headers = 'MIME-Version: 1.0' . '\r\n';
$headers .= 'Content-type:text/html;charset=UTF-8' . '\r\n';
$headers = 'From: no-reply@example.com' . '\r\n' .

mail($to,$subject,$message,$headers);
?>

Надеемся, что это приведет к созданию электронного письма в виде простого текста, похожего на:

To: sms@messaging.clickatell.com

api_id: 12345678
User: user1234
Password: PxAxSxSxWxOxRxD
To:4412345677693
To:4412345665693
To:4412375677693
To:4463879456776
Reply: youremail@yourdomain.com
text: Test Message Using Clickatell api

Однако я получаю все на одной линии. И помощь будет оценена.

0

Решение

Просто измените кавычки на двойные, чтобы правильно обрабатывать управляющие символы:

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/html;charset=UTF-8\r\n";
$headers .= "From: no-reply@example.com\r\n";

То же самое должно применяться к $ response и $ message.
Это помогает?

1

Другие решения

Я считаю, что это происходит потому, что вы устанавливаете Content-type:text/html;charset=UTF-8 в заголовках, так что вам придется использовать <br> чтобы получить новую строку.

Поскольку вы хотите использовать простой текст вместо HTML, вам нужно использовать более подходящий тип контента. Попробуйте использовать Content-type: text/plain; charset=iso-8859-1 например.


Еще одна вещь, которую следует учитывать, это (согласно руководству по PHP), некоторые реле будут «неправильно» преобразовывать "\n" в тексте "\r\n" в системах UNIX. Рекомендуется использовать константу PHP EOF вместо "\r\n"

http://php.net/manual/en/function.mail.php


Также используя строки в одинарных кавычках, вы найдете '\r\n' не относится к \ как побег персонажа. Возможно, вам придется использовать строки в двойных кавычках, такие как "\r\n" чтобы получить желаемое поведение.

http://php.net/manual/en/language.types.string.php

0