为什么 Outlook 无法识别我的 iCal 电子邮件?

问题描述 投票:0回答:1

我正在使用 PHPMailer(),但是当我使用 iCal 将电子邮件发送到 Gmail 时,Gmail 可以识别邀请,但 Outlook 不能。

正如你们所见,.ics 已附加到电子邮件中,标头已在其中发送。

<?php
# Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
require_once("class/class.phpmailer.php");
require_once("class/class.smtp.php");

# Inicia a classe PHPMailer
$mail = new PHPMailer();

# Define os dados do servidor e tipo de conexão

$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "ssl://smtp.gmail.com"; # Endereço do servidor SMTP
$mail->Port = 465; // Porta TCP para a conexão. Para GMAIL use 465, Locaweb 587
$mail->SMTPAutoTLS = false; // Utiliza TLS Automaticamente se disponível
$mail->SMTPAuth = true; # Usar autenticação SMTP - Sim
$mail->Username = 'EMAIL'; # Usuário do servidor SMTP (endereço de email)
$mail->Password = 'SENHA'; # Senha do servidor SMTP (senha do email usado)
# Define o remetente (você)
$mail->From = "[email protected]"; # Seu e-mail
$mail->FromName = "Nome"; // Seu nome

# Define os destinatário(s)//
$mail->AddAddress("[email protected]", 'NOME');    # Os campos podem ser substituidos por variáveis
#$mail->AddAddress('[email protected]'); # Caso queira receber uma copia
#$mail->AddCC('[email protected]', 'Ciclano'); # Copia
#$mail->AddBCC('[email protected]', 'Fulano da Silva'); # Cópia Oculta

# Define os dados técnicos da Mensagem
$mail->IsHTML(false); # Define que o e-mail será enviado como HTML
#$mail->CharSet = 'iso-8859-1'; # Charset da mensagem (opcional)

# Define a mensagem (Texto e Assunto)
$mail->Subject = "Convite: Teste de evento"; # Assunto da mensagem
$mail->Body = "-";
$mail->AltBody = "-";
$ical ="BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
DTSTART:20180714T210000Z
DTEND:20180714T230000Z
LOCATION:My office
CATEGORIES:Business
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:This is a note associated with the
meeting=0D=0A
SUMMARY:Meeting to discuss salaries
PRIORITY:3
END:VEVENT
END:VCALENDAR";
$mail->Ical = $ical;

# Define os anexos (opcional)

$mail->addCustomHeader('MIME-Version: 1.0'."\n");
$mail->addCustomHeader('Content-Type: text/calendar; charset="utf-8"; method=REQUEST'."\r\n");
$mail->addCustomHeader('Content-Disposition: inline; filename="evento.ics"'."\r\n");
$mail->addCustomHeader('Content-Transfer-Encoding: 7bit'."\r\n");
$mail->addStringAttachment($ical,'evento.ics','base64','text/calendar'); # Insere um anexo

# Envia o e-mail
$enviado = $mail->Send();

# Limpa os destinatários e os anexos
$mail->ClearAllRecipients();

# Exibe uma mensagem de resultado (opcional)
if ($enviado) {
 echo "E-mail enviado com sucesso. Tempo maximo para retorno em 1h a parir de ".date('H:i')."";
} else {
 echo  "Não foi possível enviar o e-mail para a DC Software.        <b>Informações do erro:</b> ". $mail->ErrorInfo."";
}

?>

我不知道为什么 Outlook 无法识别它。有人可以帮我解决这个小问题吗?

php outlook phpmailer icalendar
1个回答
0
投票

尝试在

METHOD:REQUEST
之后添加
BEGIN:VCALENDAR
。根据 RFC5545 3.7.2,您需要指定 MIME
method
标头和 iCalendar
METHOD
属性。

© www.soinside.com 2019 - 2024. All rights reserved.