Order process maintenance scheduled for Feb 8th, 2022

We will be conducting planned maintenance to ordering system on Tuesday, Feb 8th, 2022

Time:

4 AM to 8 AM CST (Minnesota, US)
11 AM to 3 PM CET (Berlin, Germany)
6 PM CST to 10 PM CST (Beijing, China)
7 PM JST to 11 PM JST (Tokyo, Japan)

During the planned maintenance, the system will continue to take orders. However customers may see temporary delays in fulfillment and order confirmation emails.

Once the maintenance is finished, we expect all functionality to resume; orders will be processed, and order confirmation emails will be sent to customers.

NavigateToTest VS2022 extension

Extension is available for other Visual Studio versions:

You can download the extension here:
NavigateToTest Visual Studio 2022 extension

Here’s the latest version that supports Visual Studio 2022.

Extension is convention based. It matches ClassName file with ClassNameTest or ClassNameTests and vice-versa, so you can easily navigate to the test file and back.

Here are some screenshots:

Here’s the toolbar name, in case it is not added automatically:

You can download the extension here:
NavigateToTest Visual Studio 2022 extension

Mail.dll – Add MandroidI18n in Xamarin release mode

Mail.dll requires multiple encodings to work.

By default in the Release mode, Xamarin applications link only most common encodings. Of course this is not enough to handle multi-national email messages.

If on startup your application receives MissingEncodingException error, you need to add MandroidI18n into your .csproj (e.g. App1.Android.csproj):

<MandroidI18n>All</MandroidI18n>

You might need to unload the project first to be able to edit it:

Alternatively you can go to:

Android project -> Properties -> Android Options

and select all possible encodings in:

Linker properties -> Additional supported encodings

Order process maintenance scheduled for Feb 24, 2021

We will be conducting planned maintenance to ordering system on Wednesday, February 24, 2021

During the planned maintenance, the system will continue to take orders. However customers may see temporary delays in fulfillment and order confirmation emails.

Once the maintenance is finished, we expect all functionality to resume; orders will be processed, and order confirmation emails will be sent to customers.

Access shared/delegate mailbox of Office 365

Enable IMAP/POP3

First make sure IMAP / POP3 are turned on properly: Enable IMAP / POP3 in Office 365

Shared mailbox permissions

Make sure you have access to the shared mailbox. Log in to Microsoft 365 admin portal at https://admin.microsoft.com/ as an administrator, go to Users/Active users tab and select shared mailbox:

On the Mail tab, in Mailbox permissions click Read and manage permissions:

Make sure your user is on the list:

Enable IMAP/POP3 for shared mailbox

On the same screen go to Manage email apps:

and select IMAP and POP3:

Now, there are 2 ways of accessing a shared mailbox in Office 365:

Using regular IMAP basic authentication and a using OAuth 2.0.

Shared mailbox – basic authentication

Make sure IMAP/POP3 access is configured and basic authentication is turned on: Enable IMAP / POP3 in Office 365

Consider using Application passwords for your account instead of your primary password: Application passwords in Office 365

Try authenticating to users’ regular mailbox with his credentials (or App password) to check if basic authentication works and the user/password is correct:

client.UseBestLogin("AlexW@example.com", "AlexWPass-or-AlexWAppPass");

Access the shared mailbox

Use the following user format:

Username@DomainName\Shared@DomainName

You must use Login method:

client.Login(@"AlexW@example.com\invoices@example.com", "AlexWPass-or-AlexWAppPass"); 

-or-

alternatively you may use LoginPlain method:

client.LoginPlain("invoices@example.com", "AlexW@example.com", "AlexWPass-or-AlexWAppPass");

Don’t use UseBestLogin for Office365 shared mailboxes and basic authentication.

The reason is Office  365 advertises LOGIN PLAIN as a preferred login method and UseBestLogin chooses to use it. However Office 365 does not recognize Username@DomainName\Shared@DomainName user pattern when using LOGIN PLAIN. For Office 365 to accept a LOGIN PLAIN to a shared mailbox, you need to provide all 3 parameters separately: shared mailbox, user and user password – use LoginPlain to do that.

Shared mailbox – OAuth 2.0

It is much simpler with OAuth. Use any of the available OAuth 2.0 flows:

https://www.limilabs.com/blog/oauth2-password-grant-office365-exchange-imap-pop3-smtp

https://www.limilabs.com/blog/oauth2-office365-exchange-imap-pop3-smtp

When you’ve obtained an access token you simply use it to access shared mailbox:

string accessToken = result.AccessToken;

using (Imap client = new Imap())
{
    client.ConnectSSL("outlook.office365.com");
    client.LoginOAUTH2("invoices@example.com", accessToken);

    client.SelectInbox();

    List<long> uids = imap.Search(Flag.Unseen);
    foreach (long uid in uids)
    {
        var eml = imap.GetMessageByUID(uid)
        IMail email = new MailBuilder().CreateFromEml();
        string subject = email.Subject);
    }
    client.Close();
}