não é possível adicionar uma imagem codificada em base64 ao vCard

Usei com êxito o Perl (via Embperl) para criar um vCard gerado dinamicamente para funcionários, preenchendo todos os campos, exceto a foto. Eu não consigo fazer isso funcionar, não importa o quê. (O código para gerar um vCard sem foto funciona bem.)

De acordo com a informação que posso encontrar online, a imagemdevo seja codificado em base64 no próprio vCard. A especificação vCard (estou usando o 3.0) suporta imagens vinculadas a URL, mas meu iPhone não irá vinculá-las dessa maneira. Então é base64 ou nada.

Agora, eu sei que a codificação base64 funciona, porque se usar o código para mostrar apenas uma imagem ...

[-
$photo = "/path/to/directory/".$employeeID.".jpg";
open($file, "<", $photo) || warn "Can't open $photo: $!\n";
#binmode $file;
$jpg = join('', <$file>);
$decoded = MIME::Base64::encode_base64($jpg);
$vcard_content  = $decoded;
-]
<img src="data:image/jpeg;base64,[+ $decoded +]">

... então a foto aparece perfeitamente no meu navegador. (Alguém sugeriu que eu precisavabinmode $file; lá, mas removê-lo parece não fazer diferença na saída.)

Mas se eu incluí-lo no vCard, a foto simplesmente não aparece com o resto dos dados de contato:

$vcard_content  = "BEGIN:VCARD\r";
$vcard_content .= "VERSION:3.0\r";
$vcard_content .= "N:".$v_last.";".$v_first.";".$v_middle.";;\r";
# etc.
$vcard_content .= "PHOTO;ENCODING=b;TYPE=JPEG:".$decoded."\r";
# etc.
$vcard_content .= "END:VCARD";

Estou mal formatando os dados do vCard de alguma forma?

questionAnswers(1)

yourAnswerToTheQuestion