展望不承认iCal

时间:2018-05-18 18:33:07

标签: php outlook phpmailer icalendar invitation

我使用的是PHPMailer(),但是当我使用iCal将电子邮件发送到Gmail时,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 = "___@gmail.com"; # Seu e-mail
$mail->FromName = "Nome"; // Seu nome

# Define os destinatário(s)//
$mail->AddAddress("__@hotmail.com", 'NOME');    # Os campos podem ser substituidos por variáveis
#$mail->AddAddress('webmaster@nomedoseudominio.com'); # Caso queira receber uma copia
#$mail->AddCC('ciclano@site.net', 'Ciclano'); # Copia
#$mail->AddBCC('fulano@dominio.com.br', '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不会重新认识它。有人可以帮我解决这个小问题吗?

1 个答案:

答案 0 :(得分:0)

尝试在%w| s m h |.each_with_index.sum { |s,i| 60**i * str[/\d+#{s}/].to_i } 之后立即添加METHOD:REQUEST。根据RFC5545 3.7.2,您需要同时指定MIME BEGIN:VCALENDAR标头和iCalendar method属性。

相关问题