Ошибка в ссылках HTML, отправляющих электронные письма в Gmail - PullRequest
1 голос
/ 09 сентября 2010

Здравствуйте, я разработал скрипт рассылки для отправки электронных писем в формате HTML.

Все отлично работает при приеме на почтовые клиенты на рабочем столе, но я замечаю, что когда я отправляю на учетную запись gmail, ссылки html не работают, а встроенные изображения, CSS, макет таблицы работают отлично. Gmail изменить

<a href="myurl" title="My url">link</a>

до

<a title="My url">link</a>

Я нашел несколько тем без решений.

Вот как я создаю письмо, в переменной $ body находятся стандартные html-ссылки:

функция send_mail ($ from, $ to, $ subject, $ body, $ site_skin, $ site_name, $ site_url) { // общий заголовок $ header = "From: $ site_name \ n"; $ header. = "BCC: $ to \ n"; $ header. = "X-Mailer: PHP5.3 \ n";

//separator string
$boundary = "==String_Boundary_x" .md5(time()). "x";

// specific message header
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/related;\n";
$header .= " boundary=\"$boundary\";\n\n";

//this part is viewed only if the program cannot manage the MIME
$message = "your software dosen't support MIME\n\n";
$message .= "--$boundary\n";
$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";

$title_newsletter ="$subject";
$mail_body = $body; 
$subject = "$titoloNSL";
$mail_site_url="$site_url";

include ("../../../../themes/skins/$site_skin/email/email.php");
$message .= "$htmlBody";

$message .= "--$boundary\n";
$message .= "Content-ID: <header>\n";
$message .= "Content-Type: image/jpeg\n";
$message .= "Content-Transfer-Encoding: base64\n\n";

$embedded_file = "../../../../themes/skins/$site_skin/images/mail_header.jpg";
$file = fopen($embedded_file,'rb');
$data = fread($file,filesize($embedded_file));
fclose($file);

$data = chunk_split(base64_encode($data));
$message .= "$data\n\n";

$message .= "--$boundary\n";
$message .= "Content-ID: <go>\n";
$message .= "Content-Type: image/gif\n";
$message .= "Content-Transfer-Encoding: base64\n\n";

$embedded_file = "../../../../themes/skins/$site_skin/images/go.gif";
$file = fopen($embedded_file,'rb');
$data = fread($file,filesize($embedded_file));
fclose($file);

$data = chunk_split(base64_encode($data));
$message .= "$data\n\n";

$message .= "--$boundary--\n";

@mail($to, $subject, $message, $header); 

}

1 Ответ

1 голос
/ 09 сентября 2010

Я думаю, что с вашим кодом все в порядке;похоже, что Gmail удаляет ссылки из вашего HTML-кода в конце.

Возможно, ваши URL-адреса не соответствуют их спам-фильтрам или что-то в этом роде?

Если это так, яне знаю, что вы можете сделать что-нибудь в своем PHP-коде для улучшения ситуации (если не отправлять письмо в виде простого текста вместо HTML).

...