Xamarin.Plugins.Messaging unable to send email with attachment
I'm using the Xamarin.Plugins.Messaging
nuget to try and send an email with an attachment. I'm getting the error
Java.Lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com./files/Summary.pdf
I've set up the Android manifest according to the instructions
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="<MyAppName>">
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.<MyAppName>.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
and added the file_paths.xml
file set to Android Resource
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
Here is the code I'm using to save a byte array as a file and attach it to an email
var fileResult = await dal.getdoc(id); //REST call
File.WriteAllBytes(Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf"), fileResult);
string fileName = Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf");
var email = new EmailMessageBuilder()
.Subject("Buyer Netsheet summary")
.Body(textSummary)
.WithAttachment(fileName, "application/pdf")
.Build();
emailMessenger.SendEmail(email);
xamarin xamarin.forms
|
show 1 more comment
I'm using the Xamarin.Plugins.Messaging
nuget to try and send an email with an attachment. I'm getting the error
Java.Lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com./files/Summary.pdf
I've set up the Android manifest according to the instructions
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="<MyAppName>">
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.<MyAppName>.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
and added the file_paths.xml
file set to Android Resource
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
Here is the code I'm using to save a byte array as a file and attach it to an email
var fileResult = await dal.getdoc(id); //REST call
File.WriteAllBytes(Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf"), fileResult);
string fileName = Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf");
var email = new EmailMessageBuilder()
.Subject("Buyer Netsheet summary")
.Body(textSummary)
.WithAttachment(fileName, "application/pdf")
.Build();
emailMessenger.SendEmail(email);
xamarin xamarin.forms
1
Did you check the file exists in the folder /data/data/com./files/Summary.pdf using File.Exists(path) ?
– sriman reddy
Jan 2 at 6:33
Your error log is displayed "Summary.pdf" , but in your code the file name is "BuyerSummary.pdf" .
– Leo Zhu - MSFT
Jan 2 at 9:50
That's a typo when posting the question. The file names are the same
– Patrick Goode
Jan 2 at 13:52
Also, I checked and file exits is true. thanks
– Patrick Goode
Jan 2 at 14:41
Ok, I solved this mostly now, using <cache-path name="cache" path="/" /> in the file_paths.xml file together with var folder = Xamarin.Essentials.FileSystem.CacheDirectory; File.WriteAllBytes(Path.Combine(folder, "BuyerSummary.pdf"), fileResult); string fileName = Path.Combine(folder, "BuyerSummary.pdf");
– Patrick Goode
Jan 2 at 17:10
|
show 1 more comment
I'm using the Xamarin.Plugins.Messaging
nuget to try and send an email with an attachment. I'm getting the error
Java.Lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com./files/Summary.pdf
I've set up the Android manifest according to the instructions
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="<MyAppName>">
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.<MyAppName>.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
and added the file_paths.xml
file set to Android Resource
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
Here is the code I'm using to save a byte array as a file and attach it to an email
var fileResult = await dal.getdoc(id); //REST call
File.WriteAllBytes(Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf"), fileResult);
string fileName = Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf");
var email = new EmailMessageBuilder()
.Subject("Buyer Netsheet summary")
.Body(textSummary)
.WithAttachment(fileName, "application/pdf")
.Build();
emailMessenger.SendEmail(email);
xamarin xamarin.forms
I'm using the Xamarin.Plugins.Messaging
nuget to try and send an email with an attachment. I'm getting the error
Java.Lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com./files/Summary.pdf
I've set up the Android manifest according to the instructions
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="<MyAppName>">
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.<MyAppName>.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
and added the file_paths.xml
file set to Android Resource
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
Here is the code I'm using to save a byte array as a file and attach it to an email
var fileResult = await dal.getdoc(id); //REST call
File.WriteAllBytes(Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf"), fileResult);
string fileName = Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "BuyerSummary.pdf");
var email = new EmailMessageBuilder()
.Subject("Buyer Netsheet summary")
.Body(textSummary)
.WithAttachment(fileName, "application/pdf")
.Build();
emailMessenger.SendEmail(email);
xamarin xamarin.forms
xamarin xamarin.forms
edited Jan 2 at 5:53
Zain Farooq
1,9942928
1,9942928
asked Jan 2 at 4:20
Patrick GoodePatrick Goode
5332922
5332922
1
Did you check the file exists in the folder /data/data/com./files/Summary.pdf using File.Exists(path) ?
– sriman reddy
Jan 2 at 6:33
Your error log is displayed "Summary.pdf" , but in your code the file name is "BuyerSummary.pdf" .
– Leo Zhu - MSFT
Jan 2 at 9:50
That's a typo when posting the question. The file names are the same
– Patrick Goode
Jan 2 at 13:52
Also, I checked and file exits is true. thanks
– Patrick Goode
Jan 2 at 14:41
Ok, I solved this mostly now, using <cache-path name="cache" path="/" /> in the file_paths.xml file together with var folder = Xamarin.Essentials.FileSystem.CacheDirectory; File.WriteAllBytes(Path.Combine(folder, "BuyerSummary.pdf"), fileResult); string fileName = Path.Combine(folder, "BuyerSummary.pdf");
– Patrick Goode
Jan 2 at 17:10
|
show 1 more comment
1
Did you check the file exists in the folder /data/data/com./files/Summary.pdf using File.Exists(path) ?
– sriman reddy
Jan 2 at 6:33
Your error log is displayed "Summary.pdf" , but in your code the file name is "BuyerSummary.pdf" .
– Leo Zhu - MSFT
Jan 2 at 9:50
That's a typo when posting the question. The file names are the same
– Patrick Goode
Jan 2 at 13:52
Also, I checked and file exits is true. thanks
– Patrick Goode
Jan 2 at 14:41
Ok, I solved this mostly now, using <cache-path name="cache" path="/" /> in the file_paths.xml file together with var folder = Xamarin.Essentials.FileSystem.CacheDirectory; File.WriteAllBytes(Path.Combine(folder, "BuyerSummary.pdf"), fileResult); string fileName = Path.Combine(folder, "BuyerSummary.pdf");
– Patrick Goode
Jan 2 at 17:10
1
1
Did you check the file exists in the folder /data/data/com./files/Summary.pdf using File.Exists(path) ?
– sriman reddy
Jan 2 at 6:33
Did you check the file exists in the folder /data/data/com./files/Summary.pdf using File.Exists(path) ?
– sriman reddy
Jan 2 at 6:33
Your error log is displayed "Summary.pdf" , but in your code the file name is "BuyerSummary.pdf" .
– Leo Zhu - MSFT
Jan 2 at 9:50
Your error log is displayed "Summary.pdf" , but in your code the file name is "BuyerSummary.pdf" .
– Leo Zhu - MSFT
Jan 2 at 9:50
That's a typo when posting the question. The file names are the same
– Patrick Goode
Jan 2 at 13:52
That's a typo when posting the question. The file names are the same
– Patrick Goode
Jan 2 at 13:52
Also, I checked and file exits is true. thanks
– Patrick Goode
Jan 2 at 14:41
Also, I checked and file exits is true. thanks
– Patrick Goode
Jan 2 at 14:41
Ok, I solved this mostly now, using <cache-path name="cache" path="/" /> in the file_paths.xml file together with var folder = Xamarin.Essentials.FileSystem.CacheDirectory; File.WriteAllBytes(Path.Combine(folder, "BuyerSummary.pdf"), fileResult); string fileName = Path.Combine(folder, "BuyerSummary.pdf");
– Patrick Goode
Jan 2 at 17:10
Ok, I solved this mostly now, using <cache-path name="cache" path="/" /> in the file_paths.xml file together with var folder = Xamarin.Essentials.FileSystem.CacheDirectory; File.WriteAllBytes(Path.Combine(folder, "BuyerSummary.pdf"), fileResult); string fileName = Path.Combine(folder, "BuyerSummary.pdf");
– Patrick Goode
Jan 2 at 17:10
|
show 1 more comment
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54001148%2fxamarin-plugins-messaging-unable-to-send-email-with-attachment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54001148%2fxamarin-plugins-messaging-unable-to-send-email-with-attachment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Did you check the file exists in the folder /data/data/com./files/Summary.pdf using File.Exists(path) ?
– sriman reddy
Jan 2 at 6:33
Your error log is displayed "Summary.pdf" , but in your code the file name is "BuyerSummary.pdf" .
– Leo Zhu - MSFT
Jan 2 at 9:50
That's a typo when posting the question. The file names are the same
– Patrick Goode
Jan 2 at 13:52
Also, I checked and file exits is true. thanks
– Patrick Goode
Jan 2 at 14:41
Ok, I solved this mostly now, using <cache-path name="cache" path="/" /> in the file_paths.xml file together with var folder = Xamarin.Essentials.FileSystem.CacheDirectory; File.WriteAllBytes(Path.Combine(folder, "BuyerSummary.pdf"), fileResult); string fileName = Path.Combine(folder, "BuyerSummary.pdf");
– Patrick Goode
Jan 2 at 17:10