Friday, October 31, 2014

Why are some attachments different places in Outlook messages?

Have you ever wondered why some messages with attachments in Outlook have the attachment in the body of the message and why some messages have the attachment at the top of the message below the Subject? This post will tell  you why that happens and how to fix it. I had a user ask me today why this was like this. He wanted the attachment at the top only not in the body of the message.

The reason this happens is due to the format of the message. In Rich Text format,(Supported since Outlook 97) it does in-line attachments in the body of the e-mail message as shown below.


 
In HTML Format and Plain Text Format the attachment is at the top of the message. HTML Format is shown below (from Office 2013)

Did you notice the attachment to the message sent in HTML format also has the size of the file (26 KB) while the message in Rich Text Format has the same attachment but no indication of file size?

So how do you change the format of the message from Rich Text to HTML? You can do it two ways. You can change it per message by opening a new message then going to FORMAT TEXT in Outlook and choosing HTML as shown below (applies to Office 2010 and Office 2013)



If you want to only send HTML Messages and have attachments be at the top of the message and not embedded in the body you can change it in the Outlook Client settings By going to FILE then OPTIONS then Mail and select HTML as shown below from Office 2103.

 
This will cause all messages from that point on to be sent in HTML Format. Please note that replies to messages will be sent in the original format of the message because Outlook preserves the format. Also in my testing the Rich Text Formatted message with the attachment in the body was slightly larger than the HTML Formatted and Plain Text messages. I am sure that will make your Exchange Administrators happy when you can send smaller messages with the same content. Microsoft recommends sending messages in HTML Format.  Rich Text format supports in-line attachments and the attachments are in the body of the message. HTML and Plain Text formats do not support in-line attachments.
 
BONUS TIP:You can also change the message format for all messages sent to an Outlook Contact
  1. Open the contact card for the recipient.
  2. In the E-mail box, double-click the recipient's e-mail address.
  3. In the Internet Format list, select the format that you want to use for messages to this recipient.
I hope this post has helped with understanding why attachments are different in your Outlook client. Feel free to leave comments.

Tuesday, September 30, 2014

Why you should upgrade Distribution groups moving to Exchange Server 2013

If you previously migrated from Exchange Server 2003 to Exchange Server 2007 and now moving to Exchange Server 2013, Group owners will not be able manage distribution groups created in Exchange Server 2003 or Exchange Server 2007 anymore. They can get the following error message when trying to make changes to a group from Outlook: 



In helping a user who could not manage a mail-enabled security group that she was the owner of and had all the correct rights and RBAC roles assigned, we saw that the Exchange Version for the problem group was 6.5 which was an old 2003 group that was not upgraded when our organization migrated to Exchange 2007 a few years ago.

When checking the group we were able to see the Exchange Version Number as shown below:
 
 
To upgrade the group using the Exchange Management Shell:
 
Set-DistributionGroup -id "Name of the group" -Forceupgrade -bypassSecuritygroupManagerCheck
 
After the group was upgraded we checked the Exchange Version number. It was now Version 14 as shown below. The user was able to manage the group after Active Directory (AD) Replication had occurred.
 
 
 
If you want to upgrade all your groups at the same time you can use the following from the Exchange Management Shell :
 
Get-DistributionGroup -ResultSize unlimited | Set-DistributionGroup -forceupgrade -bypassSecuritygroupManagerCheck
  
 
If you want to get list of the groups with their Exchange Versions in a report that can be shared with management before you begin to upgrade them, you can run the following from the Exchange Management Shell:
 

$groupdata = Get-DistributionGroup -ResultSize unlimited | select displayname, exchangeversion
 
$groupdata | export-csv c:\groups_exchversion.csv 

If you want to see the Exchange versions of your groups and get a count by Exchange versions, run the following in the Exchange Management Shell:
 
$groupdata | group ExchangeVersion
or
 Get-DistributionGroup -ResultSize Unlimited | Group ExchangeVersion if you had not done the previous CSV export like the example above.
 
The output should be similar to the following that I got running this in our environment today 
 


 
As you can see we have some work to do with upgrading our groups so let me get back to that. If you upgrade the distribution groups to Exchange 2013 but the owners/managers are still on Exchange 2007 they will no longer be able to manage the groups. This happens because the Exchange trusted subsystem cannot modify the legacy (2003 and 2007) objects. If you migrate the users to Exchange 2013 but the groups are not upgraded they will also not be able to manage the group. You should be following the guidance of using Exchange 2007 administrative tools to manage Exchange 2007 objects and using Exchange 2013 administrative tools to manage Exchange 2013 objects.  
 
Our current approach is to migrate the user mailboxes to Exchange Server 2013 and upgrade the groups for that specific OU to the Exchange 2103 version after the user migration. This way we can ensure that the groups are upgraded in the same timeframe as the user migration to avoid the support ticket that generated this blog post. 
 
Good luck to those of you moving to Exchange 2013. Please share your feedback and thoughts in the comments.

Friday, August 29, 2014

Why Can't I find a mailbox using Exchange Admin Center (EAC) in Exchange 2013?

Why Can't I find a mailbox using Exchange Admin Center (EAC) in Exchange 2013?

The answer: You may be looking in the wrong place in the Exchange Admin Center(EAC). In older versions of Exchange using the Exchange Management Console (EMC) or the Exchange Control Panel (ECP), you were able to find mailboxes when searching by just entering the name or part of the name and you would get results. Using the Exchange Admin Center (EAC) which is the new web based management console in Exchange 2013, is bit different and I will go through the options to help you get what you want when searching for a mailbox. Please note that with each of the options outlined in this post you need to wait for the data to finish loading before you start searching using the search box.

If you are searching for a User Mailbox be sure you have the mailboxes option selected.

 
 
If you are searching for a distribution group you have to have the groups option selected.
 
 
If you are searching for a resource mailbox you need to have the resources option selected
 
 
If you are searching for a shared mailbox you need to have Shared option selected
 
 
 
I hope this post has helped and made it easier for you when searching for a mailbox using the Exchange Admin Center in Exchange 2013. Please share your comments and feedback on this post.

Friday, August 1, 2014

A possible fix for Calendar Meeting Requests showing up as email messages on a BlackBerry Device


A few weeks ago we started getting reports of users on Exchange Server 2007 with BlackBerry devices getting calendar meeting requests on their BlackBerry device as an email with no option to accept or decline the meeting. We discovered that the problem was due to the
-AutomateProcessing attribute of the impacted mailbox being set to None. The default should be AutoUpdate.
 
 To see the setting for a single user open the Exchange Management Shell on Exchange 2007and type Get-MailboxCalendarSettings user alias | FL
press enter and look at what the attribute -AutomateProcessing is set to:
 
 replace user alias with the appropriate alias for the mailbox you are checking.
 
 
To fix the issue, type Set-MailboxCalendarSettings user alias -AutomateProcessing AutoUpdate and press Enter. After it is complete you can check again using Get-MailboxCalendarSettings user alias | FL 
and you should see the following: 
 
replace user alias with the appropriate alias for the mailbox you are checking.

The users were then able to see Calendar Meeting Requests correctly on the BlackBerry device.


If you want to see of all the user Mailboxes that are set to None, you can type the following in the Exchange Management Shell:

Get-Mailbox -Resultsize Unlimited -RecipientTypeDetails UserMailbox | Get-mailboxCalendarSettings | Where {$_.automateprocessing -eq "None"} | FL Identity, automateprocessing > c:\usermbcalsettings.txt

If you want to change the ones that are found you can type the following in the Exchange Management Shell: Get-Mailbox -Resultsize Unlimited -RecipientTypeDetails UserMailbox | Get-mailboxCalendarSettings | Where {$_.automateprocessing -eq "None"} | Get-MailboxCalendarSettings -AutomateProcessing AutoUpdate


Notes:
  1. For Exchange Server 2010/2013 you will use Get-CalendarProcessing instead of Get-MailboxCalendarSettings and Set-CalendarProcessing instead of Set-MailboxCalendarSettings.

  2. You can only apply Set-CalendarProcessing to Resource Mailboxes. It cannot be used on User Mailboxes like was done for Exchange 2007 users as mentioned in this post. Additionally in Exchange 2103, Exchange ignores the -AutomateProcessing attribute on the user mailbox. So if it is set to None or AutoUpdate, Exchange treats the message the same way, which is to auto update the meeting.

Refer to RIM KB31558 for more information from RIM about this issue.


If this has helped you fix Calendar Meeting requests showing up as email messages on BlackBerry devices please share in the comments or if you have any additional insights in to this issue, it would be appreciated.

Thursday, March 6, 2014

Fun With PowerShell (Make it Speak)

In my downtime, I wanted to have some fun with PowerShell and make it speak using Add-Type -AssemblyName System.Speech. I have always written an age calculation script in every scripting language I have learned and I realized I had never done one in PowerShell. So I wrote one and decided to have it speak to you. Here it is:

---------------------------------------------------------------------------------
######################################## 
# Funscript.ps1                        # 
# http://imjustanengineer.blogspot.com #
# Written by DJ 3/2014                 #
######################################## 

Add-Type -AssemblyName System.Speech
$synthesizer = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer

Write-Host This script will tell you how old you will be in $year and will speak to you. Make sure your speakers are on.;
$synthesizer.Speak("This script will tell how old you will be in ($year) and will speak to you. Make sure your speakers are on. ") | Out-Null
$name = Read-Host 'What is your name?';
$synthesizer.Speak("Hello, ($name) ,!") | Out-Null
$yb = Read-Host 'What year were you born?';
$synthesizer.Speak("Thank you, ($name) ,") | Out-Null
$date = Get-Date;
$year = + $date.Year;
$today = Get-Date -Format D;
$span = $year - $yb;
Write-Host Hello, $name. Today is $today. You will be $span years old this year. When is the party?;
$synthesizer.Speak("Hello, ($name). Today is ($today). You will be ($span) years old this year. When is the partee? ") | Out-Null
[System.Console]::Beep(262,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(294,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(349,200)

[System.Console]::Beep(330,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(294,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(392,200)
[System.Console]::Beep(349,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(262,200)
[System.Console]::Beep(482,200)
[System.Console]::Beep(440,200)
[System.Console]::Beep(349,200)
[System.Console]::Beep(330,200)
[System.Console]::Beep(294,200)
[System.Console]::Beep(482,200)
[System.Console]::Beep(482,200)
[System.Console]::Beep(440,200)
[System.Console]::Beep(349,200)
[System.Console]::Beep(392,200)
[System.Console]::Beep(349,200)




I would like to see what you can come up with. Be sure to leave your comments and suggestions below.

Friday, January 17, 2014

Have you ever needed to keep the mouse moving? MouseMover can help.

After looking around the Internet a little and not finding a decent mouse moving program, I decided to write my own. I wanted something that had an adjustability to how fast or slow the mouse would oscillate back and forth as well as over all oscillation time, instead of one that just oscillates every second making it ridiculous.

If you have improvements or suggestions, just comment and mention them.

Download link for MouseMover