AddStringAttachment дает необычные результаты - PullRequest
0 голосов
/ 13 марта 2019

Я отправляю вложения (CSV), которые я отправлял в течение многих лет с помощью mail (), но решил перейти на SMTP для повышения надежности.

Код 1 (вложение CSV)

$attachment = $this->CSVData; // "Date","Name","Dept" ... \n"2019-03-13","Dave" ...
$encoding = 'base64';
$contentType = 'text/csv';
$filename = $this->createFileName(); //Get FileDate and Name

$recipient = $delivery_email; // xxxxxxx@gmail.com
$subject = $this->emailHeader['subject'] . " CSV Data";
$message =  'Daily Data File';

$mail = new PHPMailer\PHPMailer\PHPMailer(true);          // Passing `true` enables exceptions                         
try {
    //Server settings
    $mail->SMTPDebug = 0;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = SMTP_HOST;                              // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = SMTP_USER;                          // SMTP username
    $mail->Password = SMTP_PASS;                          // SMTP password
    $mail->SMTPSecure = SMTP_AUTH;                        // Enable TLS encryption, `ssl` also accepted
    $mail->Port = SMTP_PORT;                              // TCP port to connect to

    //Recipients
    $mail->setFrom($this->fromEmail, $this->fromEmailName);      // Add a FROM
    $addresses = explode(',', $recipient);
    foreach ($addresses as $address) {
        $mail->AddAddress(trim($address));                       // Add a recipient(s)
    }           
    if ( !empty($this->emailCC) ) $mail->addCC($this->emailCC);  // Add a CC

    //13-03-2019: Add the attachment to the email
    $mail->AddStringAttachment($attachment, $filename, $encoding, $contentType);

    //Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = $subject;
    $mail->Body    = $message;
    $mail->AltBody = 'This email is formatted in HTML';
    $mail->send();
    $this->fo->printStatus('Email successfully sent to: '. $recipient );

    return true;
} catch (Exception $e) {
    $this->fo->printStatus( basename(__FILE__) .' '. __LINE__ . ': Message could not be sent. Mailer Error: '. $mail->ErrorInfo );
    return false;
}

Мне доставляется письмо, НО ... Проблемы:

  1. При просмотре в браузере Gmail - появляется сообщение: «Сканеры вирусов Gmail временно недоступны - Прикрепленные файлы не проверенывирусы. Скачивайте эти файлы на свой страх и риск. "
  2. При просмотре в браузере Gmail - я не могу сохранить / загрузить файл?(нажатие на кнопку загрузки ничего не делает)
  3. При нажатии на вложение для просмотра в браузере, я теперь получаю сообщение об ошибке: «К сожалению. При предварительном просмотре этого документа произошла ошибка»
  4. Я пытаюсь «Показать оригинал»"и для загрузки электронной почты требуется более 30 секунд, в которой отображаются только закодированные в base64 данные
  5. Я пытался открыть папку входящих сообщений в Outlook, и после 5 минут не загруженных писем я отказался (полагая, что письмане закодированы должным образом или что-то, из-за чего внешний вид застревает)

Похоже, что он работает (то есть файл выглядит корректно на основании предварительного просмотра значка gmail), но я не могу ничего с этим поделать, и я неНе знаете, является ли это проблема Gmail или проблема с файлом.

Любой совет?

1 Ответ

1 голос
/ 14 марта 2019

Оказывается, что у Gmail были проблемы вчера с вложениями.Это была проблема Gmail - время невероятно

https://www.theguardian.com/technology/2019/mar/13/googles-gmail-and-drive-suffer-global-outages

...