Twilio 不会发送包含照片的 vCard

问题描述

我正在使用以下方法使用 vObjects 模块创建我的 vCard:


def _create_vcard(assigned_address,write_to_disk=False):
    vCard = vobject.vCard()
    vCard.add('N').value = vobject.vcard.Name(given='EXAMPLE')
    vCard.add('FN').value = "EXAMPLE"

    vCard.add('EMAIL')
    vCard.email.value = '[email protected]'
    vCard.email.type_param = 'SUPPORT_EMAIL'

    vCard.add('TEL')
    vCard.tel.value = assigned_address
    vCard.tel.type_param = 'SYstem_NUMBER'

    vCard.add('URL')
    vCard.url.value = 'https://X.com/'
    vCard.url.type_param = 'WEBSITE'

    vCard.add('PHOTO;ENCODING=b;TYPE=image/jpeg').value = _b64_image('assets/example.jpg') # This line

    vCard_data = vCard.serialize()

然后将序列化数据发送到公共 S3 存储桶

def _write_vcard_to_s3_bucket(vCard_data,number):
    file_name = number[1:-1] + ".vcf"

    client = boto3.client('s3')
    response = client.put_object( 
        Bucket='EX-vcards',Body=vCard_data,Key=file_name,ContentType='text/x-vcard'
    )

    bucket_url = f'https://EX.s3.amazonaws.com/{file_name}'
    return bucket_url

Twilio 代码

def twilio_send_test_message(number,vcard_url):
    client = get_twilio_client()
    message = client.messages.create(
         body=f'example message with vCard',from_= number,media_url=[vcard_url],to='+1USPHONENUMBER'
    )
    return message

_b64 函数

def _b64_image(filename):
    with open(filename,'rb') as f:
        b64 = base64.b64encode(f.read())

    final = b64.decode('utf-8')
    return final

当注释掉照片行时,vCard 发送得很好,但有了它,它就不起作用了。

我还通过在本地将其写出到 .vcf 来发短信,如果保存在本地,它可以很好地处理图像。

我明显做错了吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)