Odesílání iCal – ICS události

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
FJP
Člen | 124
+
0
-

Ahoj snažím se poslat iCalendar pozvánku, ale marně.

dostávám error:

Missing argument 2 for Nette\Mail\MimePart::setHeader()

		$organizer          = 'OKškolení';
		$organizer_email    = 'organizator@email.cz';

		$participant_name_1 = 'Jmeno ucastnika';
		$participant_email_1= 'muj@email.cz';

		$location           = "Praha";
		$date               = '20131026';
		$startTime          = '0800';
		$endTime            = '0900';
		$subject            = 'kód + název';
		$desc               = 'Test';

		$headers = 'Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;\r\n';
		$headers .= "Content-Type: text/plain;charset=\"utf-8\"\r\n";

		$message = "BEGIN:VCALENDAR\r\n
		VERSION:2.0\r\n
		PRODID:-//Deathstar-mailer//theforce/NONSGML v1.0//EN\r\n
		METHOD:REQUEST\r\n
		BEGIN:VEVENT\r\n
		UID:" . md5(uniqid(mt_rand(), true)) . "example.com\r\n
		DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z\r\n
		DTSTART:".$date."T".$startTime."00Z\r\n
		DTEND:".$date."T".$endTime."00Z\r\n
		SUMMARY:".$subject."\r\n
		ORGANIZER;CN=".$organizer.":mailto:".$organizer_email."\r\n
		LOCATION:".$location."\r\n
		DESCRIPTION:".$desc."\r\n
		ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN".$participant_name_1.";X-NUM-GUESTS=0:MAILTO:".$participant_email_1."\r\n
		END:VEVENT\r\n
		END:VCALENDAR\r\n";

		$headers .= $message;

		$mail = new Message;
		$mail->setFrom('web-no-reply@mujweb.com')
			->addTo('muj@email.cz')
			->setSubject('test')
			->setHeader($headers)
			->setBody($message);
		$this->mailer->send($mail);

A i když jsem zkoušel nastavit hlavičky jednotlivě:

->setHeader('Content-Type', 'text/calendar')
->setHeader('Content-Disposition', 'inline')
(atd...)

tak se to neodeslalo.

Editoval FJP (31. 8. 2015 14:15)

Jan Suchánek
Člen | 404
+
0
-

Ahoj prosimtě, ale tam je povinnej i ten druhej parametr, respektive, co tam do setHeader dáváš?

public function setHeader($name, $value, $append = FALSE)

Editoval Jan Suchánek (31. 8. 2015 14:38)

iguana007
Člen | 970
+
+1
-

Zde je souhrn toho, jak by si měl funkční iCal pozvánku sestavit, aby ti to fungovalo správně (dotaz je na stackoverflow sice v sekci c#, ale princip je stejný): http://stackoverflow.com/…hout-outlook

Jan Suchánek
Člen | 404
+
+1
-

Případně zde je diskuze ohledně odesílání iCal v php. Každopádně pokud zakomentuješ:

$headers .= $message;

a opravíš předávání proměných do setHeader tak ti odesílání fungovat bude. Např.:

$mail->setHeader("charset","utf-8");

Editoval Jan Suchánek (31. 8. 2015 15:04)

FJP
Člen | 124
+
0
-

Díky všem za rady.

iguana007 napsal(a):

Zde je souhrn toho, jak by si měl funkční iCal pozvánku sestavit, aby ti to fungovalo správně (dotaz je na stackoverflow sice v sekci c#, ale princip je stejný): http://stackoverflow.com/…hout-outlook

Chápu to správně, že se k mailu má přibalit ještě příloha? Myslel jsem, že to není nutné.

iguana007
Člen | 970
+
+1
-

FJP napsal(a):
Chápu to správně, že se k mailu má přibalit ještě příloha? Myslel jsem, že to není nutné.

Je to tam napsané :)
Part 3: Optionally, attach the .ics file itself, so ordinary mail readers can offer the user something to click on. Outlook does not really require the attachment because it just reads the text/calendar part.

Tj. pokud chceš, aby ti to fungovalo ve většině klientů, tak je lepší přílohu přidat ;)

Editoval iguana007 (1. 9. 2015 15:50)

FJP
Člen | 124
+
0
-

iguana007 napsal(a):

FJP napsal(a):
Chápu to správně, že se k mailu má přibalit ještě příloha? Myslel jsem, že to není nutné.

Je to tam napsané :)
Part 3: Optionally, attach the .ics file itself, so ordinary mail readers can offer the user something to click on. Outlook does not really require the attachment because it just reads the text/calendar part.

Tj. pokud chceš, aby ti to fungovalo ve většině klientů, tak je lepší přílohu přidat ;)

Už funguje, díky ;)