0

私のアプリケーションでは、SMTP を使用して電子メールを送信します。メールメッセージをhtmlメールとして送信します。

HTML コンテンツが小さい場合、SMTP を使用して電子メールを正しく送信できますが、電子メール メッセージに長い HTML コンテンツが含まれている場合、メールはアカウントに到達しません。

その理由は何ですか?

クライアント側からSMTPサーバーに渡すメッセージサイズを変更するコマンドまたはコードはありますか?

以下は、メールの送信に使用している SMTP コードです。

function smtp_mail($from, $to, $subject, $message, $headers="", $params=array()) {
    $errno = "";
    $errstr = "";
    $smtpConnect = fsockopen("mail2.allramhosting.com", "25", $errno, $errstr, 20);


    if (!empty($smtpConnect)) {

        if ($params['use_html']) {
            $extra_headers .= "MIME-Version: 1.0\nContent-Type: text/html; charset=\"utf-8\"\nContent-Transfer-Encoding: 7bit\n";
        }
        $headers = "To: " . $to . "\nFrom: " . $from . "\nSubject: " . $subject . "\nDate: " . date('r') . "\n" . $extra_headers . $headers;

        if (substr($headers, -1) == "\n") $headers = substr($headers, 0, -1); // Our last character should not be newline


        fputs($smtpConnect, "HELO networkssms.com\r\n");
        fputs($smtpConnect, "MAIL FROM: " . $from . " SIZE=1000000\r\n");
        fputs($smtpConnect, "RCPT TO: " . $to . "\r\n");
        fputs($smtpConnect, "DATA\r\n");
        fputs($smtpConnect, $headers . "\r\n\r\n");
        fputs($smtpConnect, $message . "\r\n.\r\n"); // send message and finish
        fputs($smtpConnect,"QUIT" . $newLine);
        fclose($smtpConnect);
        return true;
    }
    return false;
}

これは呼び出し関数です:

<?php
$subject = "UnTouched Ticket Notification";
$to = "example@gmail.com";
$from = "test@domain.com";
$part = "<html><body>\n";
$part .= "<div style='background-color: #EEEEEE;;padding: 10px 10px 20px;width: 650px; float:left;font-size:18px;'>\n";
$part1 = "<div style='width:500px;'>\n";

$part1 .= "<div style='width:450px;background-color:#eeeeee;padding: 30px 0 20px; height:auto; float:left;font-size:15px;margin-left:50px;'>\n";
$part3 = "</div></div></div>\n";
$part3 .= "</body></html>\n";

$center_part1 = 'Dear Admin ,';
$center_part = "You have opened 25 tickets . But the following tickets are not updated yet ,\n";
$center_part2="<div style='width:345px;color:#000000;font-size:12px;margin-left:25px; font-weight:bold; height:auto; margin-top:30px;'>\n";

$new = '<table height="92" style="border:2px solid #DCDCDC; width:565px;" cellspacing="0" cellpadding="0">
  <tr style="background-color:#E5E5E5;">
    <th height="35">Ticket #</th>
    <th>Customer</th>
    <th>Type</th>
    <th>Untouched Days</th>
    <th>Untouched Hours</th>
    <th>Last Updated Date</th>
  </tr>';
for($i=0;$i<100;$i++){
$new.= "<tr>
    <td align = 'center' height='30'>".$i."</td>
    <td align = 'center'>test</td>
    <td align = 'center'>terst</td>
    <td align = 'center'>".$i." Days</td>
    <td align = 'center'>".$i." Hours</td>
    <td align = 'center'>".$i."</td>
  </tr>";
}
$center_part2.=$new."</table></div>\n";
$message = $part.$center_part1.$part1.$center_part.$center_part2.$part3;
        if($to){
            smtp_mail($from, $to ,$subject, $message,"MIME-Version: 1.0\nContent-Type: text/html; charset=\"utf-8\"\nContent-Transfer-Encoding: 7bit\n");
        }

?>

その理由は何か特定できますか?

4

1 に答える 1

1

その理由は何ですか?

サーバーはそのように構成されています。

クライアント側からSMTPサーバーに渡すメッセージサイズを変更するコマンドまたはコードがある場合は?

いいえ。

于 2012-04-16T06:44:49.553 に答える