Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.03.2018 13:04:23

Mail attach и русские имена файлов

Добрый день!

Пытаюсь отправлять файлы в письме, а вот приходят они ко мне (на мак) с именами из кракозябров...

А вот что получается в письме utf-8''%D0%BF%D1%80%D0%B5%D0%B7%D0%B8%D0%B4%D0%B5%D0%BD%D1%82.pdf

			Mail::html($msg, function($mail) 
			use($msg, $title, $email, $mailList, $message)
			{
				foreach(Content::uFile()->get($message, 'files')->files() as $file) {
					$mail->attach(Storage::disk($file->disk)->getAdapter()->getPathPrefix().'/'.$file->path.$file->file, [
                        'as' => $file->orig_name,
                    ]);
				}
				$mail->to($email)->subject($title); 
			 	$mail->from(Helpers::dataIsSetValue($mailList, 'email_from'), Helpers::dataIsSetValue($mailList, 'from_name'));
			});

Изменено Kiran (15.03.2018 13:05:00)

Не в сети

#2 16.03.2018 18:47:45

Re: Mail attach и русские имена файлов

Смотрю другие письма, где с  аттачем все хорошо, там имя файла по другому кодируется filename="=?UTF-8?B?0JLQvdGD0YLRgNC10L3QvdGP0Y8uanBn?=" . А так же сам текст сообщения тоже закодирован, а у меня чистый хтмл идет

Не в сети

#3 16.03.2018 19:04:45

Re: Mail attach и русские имена файлов

Причем время от времени система тупо показывает нормальные имена, а потом у тех же писем вновь кракозябры. явно какой то косяк есть. На планшете всегда кракозябры. Так же поступили сведения, что и gmail так же криво. Уже всю голову сломал, незнаю как решить...

Не в сети

#4 17.03.2018 09:30:53

Re: Mail attach и русские имена файлов

Kiran пишет:

Смотрю другие письма, где с  аттачем все хорошо, там имя файла по другому кодируется filename="=?UTF-8?B?0JLQvdGD0YLRgNC10L3QvdGP0Y8uanBn?="

Это делается через base64_encode: https://stackoverflow.com/a/27436115/272885


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#5 17.03.2018 15:08:06

Re: Mail attach и русские имена файлов

Это делается через base64_encode:

Все круто, да я тут потестировал чуток, даже письма отравленные с самого мака на себя же приходят с корявой кодировкой. В Том же яндексе сделано вот так filename="=?UTF-8?B?0JLQvdGD0YLRgNC10L3QvdGP0Y8uanBn?=" и на мак и на планшет приходит все классно.

Теперь вопрос, как я могу подменить метод attach и сделать свой функционал, для того что бы по другому формировать заголовки?

Не в сети

#6 22.03.2018 10:46:14

Re: Mail attach и русские имена файлов

Ты так поблагодарил меня или же сказал, что не знаешь как это применить? Непонятно. smile


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#7 22.03.2018 10:52:54

Re: Mail attach и русские имена файлов

P.S. Слово UTF-8 кагбе намекает, что далее идет строка в UTF-8. Если внезапно™ там другая кодировка, то будет плохо, конечно. Не мешает проверить этот момент один раз чтобы знать наверняка.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#8 22.03.2018 12:18:45

Re: Mail attach и русские имена файлов

P.S. Слово UTF-8 кагбе намекает, что далее идет строка в UTF-8. Если внезапно™ там другая кодировка, то будет плохо, конечно. Не мешает проверить этот момент один раз чтобы знать наверняка.

Да проблема в том, что на маке почтовик сам себе отправляя получает корявую кодировку. А если например с того же яндекса то все классно получает, но там по другому выглядит сама строка кодирования. я так понял что бы это применить надо писать свой функционал вместо того, что есть в Ларавеле. В итоге в рамках этого проекта решили писать в транслите имена файлов, тогда все хорошо.
Но в идеале сделать что было все хорошо, а вот как не сильно мучаясь это реализовать...

Не в сети

#9 22.03.2018 14:55:33

Re: Mail attach и русские имена файлов

Kiran пишет:

я так понял что бы это применить надо писать свой функционал вместо того, что есть в Ларавеле.

неправильно понял. достаточно имя указать какое тебе надо при вызове метода attach() или attachData().


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела