Hello Team,
I am facing issue to send mail from a user in AAD. The mail problem is in execute_query().
I would like top send it via ClientConfidentialClient with msal lib and send mail with a specified user with access token.
import msal
from office365.graph_client import GraphClient
from office365.outlook.mail.messages.message import Message
def acquire_token():
"""
Acquire token via MSAL
"""
authority_url = 'https://login.microsoftonline.com/{tenant_id}'
app = msal.ConfidentialClientApplication(
authority=authority_url,
client_id='',
client_credential=''
)
token = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])
return token
client = GraphClient(acquire_token)
print
message = client.users["[email protected]"].messages.new()
#client.load(message)
message.sender = "[email protected]"
message.subject = "Meet for lunch?"
message.body = "The new cafeteria is open."
message.to_recipients = ["[email protected]"]
mailbox = client.users["[email protected]"]
#mailbox.send_mail(message)
#message.send()
client.users["[email protected]"].send_mail(message).execute_query()
I am receiving the errors one or the other.
error: Traceback (most recent call last):
File "C:\Users\712645\OneDrive - Cognizant\Desktop\new.py", line 44, in
client.users["[email protected]"].send_mail(message).execute_query()
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_object.py", line 41, in execute_query
self.context.execute_query()
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_runtime_context.py", line 132, in execute_query
self.pending_request().execute_query()
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 93, in execute_query
response = self.execute_request_direct(request)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\odata\odata_request.py", line 36, in execute_request_direct
return super(ODataRequest, self).execute_request_direct(request)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 137, in execute_request_direct
response = requests.get(url=request_options.url,
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 528, in request
prep = self.prepare_request(req)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 456, in prepare_request
p.prepare(
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 316, in prepare
self.prepare_url(url, params)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 390, in prepare_url
raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?
or
for the me, the errors are very confusing to solve.
Traceback (most recent call last):
File "C:\Users\712645\OneDrive - Cognizant\Desktop\testOut.py", line 25, in
client.me.send_mail(message).execute_query()
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_object.py", line 41, in execute_query
self.context.execute_query()
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_runtime_context.py", line 132, in execute_query
self.pending_request().execute_query()
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 93, in execute_query
response = self.execute_request_direct(request)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\odata\odata_request.py", line 36, in execute_request_direct
return super(ODataRequest, self).execute_request_direct(request)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\runtime\client_request.py", line 105, in execute_request_direct
self.context.authenticate_request(request_options)
File "C:\Users\712645\AppData\Local\Programs\Python\Python39\lib\site-packages\office365\graph_client.py", line 97, in authenticate_request
token_json = self._acquire_token_callback()
TypeError: 'dict' object is not callable
Thank you.
Regards,
Libin
Please conform whether execute_query() is required to be called and the acquire_token is passed as a pointer or a function callback. It is very much confusing.
Hello. Have you found a way around this bug?
This issue has been addressed, here is an example:
client = GraphClient.with_client_secret(tenant_name_or_id, client_id, client_secret)
client.users[user_principal_name_or_id].messages.add(
subject="Meet for lunch?",
body="The new cafeteria is open.",
to_recipients=["[email protected]"],
).send().execute_query()