Я использую PHPMailer (), но когда я отправляю электронное письмо в Gmail с помощью iCal, Gmail распознает приглашение, а внешний вид — нет.
Как вы, ребята, видите, что .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 не распознает это. Может ли кто-нибудь помочь мне с этой маленькой проблемой?
Попробуй добавить METHOD:REQUEST
сразу после BEGIN:VCALENDAR
, Согласно RFC5545 3.7.2, вам нужно указать оба — MIME method
заголовок и iCalendar METHOD
имущество.
Других решений пока нет …