【问题标题】:PHP: iCal creations, how to make a new line in a descriptionPHP:iCal 创作,如何在描述中换行
【发布时间】:2015-04-09 16:16:31
【问题描述】:

我正在使用以下内容为 php 脚本的 Outlook 创建日历邀请。但是 \n 并没有给我一个新的前景。有没有办法做到这一点?如果你不能,这似乎很愚蠢!

  function addToCalendar($calEmail, $calSubject, $calDesc) 
  {

$calEmail = 'freelance@skinzy.org';
$description = $calDesc;
$message="BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20110718T121000Z
DTEND:20110718T131000Z
DTSTAMP:20110525T075116Z
ORGANIZER;CN=TOMS TEST:mailto:system@skinzy.org
UID:12345678
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Yup:mailto:sample@test.com
DESCRIPTION New \n Line
LOCATION: I AM THE LOCATION
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY: TEST SUMMARY
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR";

$headers = "From: From Name <From Mail>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/calendar; method=REQUEST;\n";
$headers .= '        charset="UTF-8"';
$headers .= "\n";
$headers .= "Content-Transfer-Encoding: 7bit";


$subject = "Meeting Subject";
$subject = html_entity_decode($calSubject, ENT_QUOTES, 'UTF-8');


if(mail($calEmail, $calSubject, $message, $headers)) {

    echo "sent";
}else {
    echo "error";
}


  }

这是我遇到问题的 DESCRIPTION New \n Line 部分。

任何帮助将不胜感激

汤姆

【问题讨论】:

    标签: php outlook icalendar


    【解决方案1】:

    您应该将 \r\n 替换为 \n:

    $description = str_replace("\r\n", "\\n", $description);
    

    另见Encoding newlines in iCal files

    【讨论】:

      【解决方案2】:

      您可以使用=0D=0A 换行并使用适当的编码:

      DESCRIPTION;ENCODING=QUOTED-PRINTABLE:This is the first line.=0D=0AThe Second line.=0D=0AThe third line.
      

      或替代方法(使用 base64):

      DESCRIPTION;FMTTYPE=text/html;ENCODING=BASE64:PHA+Tm9ybWFsIDAgZmFsc2UgZmFsc2UgZmFsc2UgTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcjQ8L3A+DQo8YnIgY2xhc3M9ImNsZWFyIiAvPg==
      

      【讨论】:

        【解决方案3】:

        在 Windows 上,您使用 \r\n 创建一个新行。

        更详细的:

        \r 在 ASCII 中是 CR 代表“回车”
        \n 在 ASCII 中是 LF 代表“换行”

        Windows 需要两者的结合,而 Linux 系统只需使用 \n

        Wikipedia's Newline page 上有大量信息(可能比您有兴趣知道的还要多)。

        【讨论】:

        • 嘿,非常感谢。我不知道。 Outlook 仍然没有将其视为新行 :(
        猜你喜欢
        • 2017-01-22
        • 2013-05-26
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        • 2020-12-10
        • 2013-12-02
        • 1970-01-01
        相关资源
        最近更新 更多